HandCoder : extension Nvu pour Tidy et PHP
Modérateur : chinon37
hmmm....
effectivement c'est plus complique.
Je ne sais pas si c'est possible de faire ca dans la mesure ou tu ne connais pas a l'avance, ni le nombre de pre, ni le nombre de br. En tout cas, si c'est possible, ca doit etre sacrement alambique.
As-tu pense a parser ta chaine afin de creer ta regexp a chaque fois ?
effectivement c'est plus complique.
Je ne sais pas si c'est possible de faire ca dans la mesure ou tu ne connais pas a l'avance, ni le nombre de pre, ni le nombre de br. En tout cas, si c'est possible, ca doit etre sacrement alambique.
As-tu pense a parser ta chaine afin de creer ta regexp a chaque fois ?
Non, je n'y ai pas pensé. Je me suis acharné à trouver une syntaxe du type :
mais ça n'a pas l'air de vouloir fonctionner.
Est-ce une limitation du support des regexp par le moteur JavaScript de Gecko ? Ou est-ce tout simplement incorrect de passer un $1 en paramètre de fonction dans ce cas ?
Je vais faire quelques essais ce soir ; dans le pire des cas je coderai une merdouille à coups de boucles... mais je n'ose pas imaginer l'impact sur les performances quand on édite une page de 100 KO !
Code : Tout sélectionner
function EscapeBR(data) {
return data.replace(/<br \/>/g, '\n');
}
[...]
newString = docString.replace(/<pre([^<]*)<\/pre>/g, EscapeBR($1));
Est-ce une limitation du support des regexp par le moteur JavaScript de Gecko ? Ou est-ce tout simplement incorrect de passer un $1 en paramètre de fonction dans ce cas ?
Je vais faire quelques essais ce soir ; dans le pire des cas je coderai une merdouille à coups de boucles... mais je n'ose pas imaginer l'impact sur les performances quand on édite une page de 100 KO !
KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
ah oui, pas bete l'appel de la fonction, c'est bizarre que ca ne marche pas. Ca te donne quoi comme resultat ?
Sinon, je viens de penser a une solution a une boucle et sans regexp, mais je suis pas sur qu'elle marche.
Tu mets un boolean isInsidePre a false.
Tu parcours ta chaine caractere par caractere.
tu regardes avec substring ou slice si tu croises un <pre>, si oui, tu passes ton boolean a true. Tu le remettras a false quand tu verras </pre>
En meme, temps, tu regardes (toujours avec substring) si tu as des balises <br />.
Si tu en as et que ton boolean est true, tu remplaces ta chaine par un string.substring(0,i) + '\n' + string.substring(i + 6, string.length)
(ou un truc dans ce gout la)
pas 100% certain que ca puisse marcher, ni que ce soit pas trop lent.
Mais en tout cas, si j'avais ca a faire, je regarderais de ce cote, c'est meme pas dit que ce soit plus lent que deux regexp imbriquees.
Sinon, je viens de penser a une solution a une boucle et sans regexp, mais je suis pas sur qu'elle marche.
Tu mets un boolean isInsidePre a false.
Tu parcours ta chaine caractere par caractere.
tu regardes avec substring ou slice si tu croises un <pre>, si oui, tu passes ton boolean a true. Tu le remettras a false quand tu verras </pre>
En meme, temps, tu regardes (toujours avec substring) si tu as des balises <br />.
Si tu en as et que ton boolean est true, tu remplaces ta chaine par un string.substring(0,i) + '\n' + string.substring(i + 6, string.length)
(ou un truc dans ce gout la)
pas 100% certain que ca puisse marcher, ni que ce soit pas trop lent.
Mais en tout cas, si j'avais ca a faire, je regarderais de ce cote, c'est meme pas dit que ce soit plus lent que deux regexp imbriquees.
Ca fonctionne, la date de la derniere modification ne bouge pas, seule la date du dernier accès est modifiée.Kaze a écrit :Tu peux essayer l'option --keep-time yes pour ne pas modifier la date du fichier au lancement de Tidy. Je n'ai jamais essayé cette option sous Windows...
winxp, hancoder option tidy sur 'editeur' (recommandé). l'option 'chaque sauvegarde' n'as pas de sens pour ce test ? Au fait l'option 'sur demande' correspond a quelle action ?
Rudy
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Soutenir KompoZer
Comme quoi XP n'est pas si mauvais ! Je vais mettre cette option par défaut dans le panneau d'options de HandCoder.Do-IT a écrit :Ca fonctionne, la date de la derniere modification ne bouge pas, seule la date du dernier accès est modifiée.
En effet !Do-IT a écrit :l'option 'chaque sauvegarde' n'as pas de sens pour ce test ?
Ah oui tiens, j'ai oublié quelque chose là...Do-IT a écrit :Au fait l'option 'sur demande' correspond a quelle action ?

Ca correspond au raccourci clavier [F7], qui justement est buggé sur cette beta.
Je vais faire un menu "HandCoder" dans le menu "Outils", qui contiendra les items "Editeur texte [F6]", "Tidy [F7]" et "options...", ça sera plus clair.
Ca me donne une erreur dans la console JavaScript ($1 is not defined), parce que j'ai oublié les guillemets autour de $1 !arno. sans ses cookies a écrit :ah oui, pas bete l'appel de la fonction, c'est bizarre que ca ne marche pas. Ca te donne quoi comme resultat ?
Quand je dis que je suis nul en regexp...

Bon, si je pense aux guillemets, ça me retourne exactement la chaîne d'origine, comme si les expressions rationnelles étaient ignorées dans la fonction "EscapeBR". J'ai vérifié que le contenu de "$1" était bien passé à cette fonction...
Je crois que ça va se terminer avec une boucle...
ton algo est sûrement fonctionnel, mais parcourir un texte caractère par caractère (en incluant des registres à décalage pour tester les "<br />"), ça risque d'être longuet pour du JavaScript...
Au fait, une question plus simple : quelle expression rationnelle utiliserais-tu pour capturer toute une balise <pre> ... </pre> ? La regexp /<pre([^<]*)<\/pre>/ ne fonctionne pas, justement à cause des <br /> contenus dans la balise !
KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Je sais pasKaze a écrit :Au fait, une question plus simple : quelle expression rationnelle utiliserais-tu pour capturer toute une balise <pre> ... </pre> ? La regexp /<pre([^<]*)<\/pre>/ ne fonctionne pas, justement à cause des <br /> contenus dans la balise !


En tout cas, pour les regexp javascript, si tu le connais pas deja, je te conseille ce tutoriel la :
http://www.webreference.com/js/column5/
Bon courage.
Non, je ne connaissais pas celui-là. Ca a l'air assez exhaustif, ça va être mon livre de chevet pour ce soir.
Par contre j'ai la réponse (mais y'a de la triche) :ça ne fonctionne qu'avec Nvu, qui code toutes ses balises <pre /> sur une seule ligne (alors qu'il casse les lignes des autres balises à une soixantaine de caractères).
Du coup il suffit de 3 lignes de code :C'était tellement simple que je me sens un peu c**... 
Par contre j'ai la réponse (mais y'a de la triche) :
Code : Tout sélectionner
/<pre[^\r\n]*/g
Du coup il suffit de 3 lignes de code :
Code : Tout sélectionner
var lines = source.match(/<pre[^\r\n]*/g);
for (var i = 0; i < lines.length; i++)
source = source.replace(lines[i], lines[i].replace(/<br \/>/g, '\n'));

KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Une nouvelle beta : HandCoder-20051103-fr
Là je crois qu'on se rapproche dangereusement de la release :
Là je crois qu'on se rapproche dangereusement de la release :
- les <br /> sont remplacés par des fins de ligne dans les blocs <pre />
- il y a un menu "HandCoder" dans le menu "Outils" qui permet de lancer l'éditeur (F6) et Tidy (F7) ; le bouton "Editeur" n'est donc plus indispensable
- localisé en français, anglais, allemand, italien, russe et chinois
- Mise à jour (4/11/2005, 15h) :
ce bug est beaucoup plus pénible que prévu. Il est possible de ne pas décaler les scripts PHP, mais au prix de manipulations vraiment pénibles... et en perdant une partie de l'indentation à l'intérieur du script, ce que je trouve rédhibitoire.
Personnellement je n'utilise quasiment jamais de script PHP de plus d'une ligne à l'intérieur d'un document HTML (les scripts d'une ligne ne sont pas concernés par ce bug) ; je préfère de loin recourir à des moteurs de templates et/ou des fichiers externes. Mais en faisant ces tests je me suis rendu compte que Nvu était, de toutes façons, particulièrement mal pratique pour les longs scripts PHP (ne serait-ce que parce que la fenêtre d'édition de code n'est pas retaillable).
Bien sûr, je continuerai à chercher à améliorer ce point (peut-être en proposant un patch à l'équipe de Tidy), mais ça ne sera pas prêt pour la prochaine release.

KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
HandCoder-20051103-fr
Apres un rapide coup d'oeil, j'ai quelques fonctionnements aleatoires :
- bouton Editer grisé mais F6 fonctionne (sur nouveau fichier),
- toujours des br dans les pre (bizarre),
- ecrasement du fichier dans l'onglet par l'ouverture d'un autre fichier (apres open with),
- F6 ou F7 sur un nouveau fichier qui provoque l'enregistrement (normal), mais sans suite apres l'enregistrement.
Je ferais des tests répétitifs ce we.
Pour le php, c'est tidy qui provoque le decalage ? Y'a pas moyen de lui dire d'ignorer ce qui est entre les balises php ? Ou de réinjecter le code php dans le fichier apres un tidy.
Parceque ni les decalages, ni aucune indentation ne sont souhaitables. Et moi j'ai frequement 50 lignes de code php d'affilées. Quand a l'editeur de code de nvu je ne compte pas l'utiliser. En attendant j'ai mis Tidy sur F7 seulement.
j'ai un fichier php qui a perdu un paquet de ligne php, faut que je verifie mes archives chez moi.
Rudy
Apres un rapide coup d'oeil, j'ai quelques fonctionnements aleatoires :
- bouton Editer grisé mais F6 fonctionne (sur nouveau fichier),
- toujours des br dans les pre (bizarre),
- ecrasement du fichier dans l'onglet par l'ouverture d'un autre fichier (apres open with),
- F6 ou F7 sur un nouveau fichier qui provoque l'enregistrement (normal), mais sans suite apres l'enregistrement.
Je ferais des tests répétitifs ce we.
Pour le php, c'est tidy qui provoque le decalage ? Y'a pas moyen de lui dire d'ignorer ce qui est entre les balises php ? Ou de réinjecter le code php dans le fichier apres un tidy.
Parceque ni les decalages, ni aucune indentation ne sont souhaitables. Et moi j'ai frequement 50 lignes de code php d'affilées. Quand a l'editeur de code de nvu je ne compte pas l'utiliser. En attendant j'ai mis Tidy sur F7 seulement.
j'ai un fichier php qui a perdu un paquet de ligne php, faut que je verifie mes archives chez moi.
Rudy
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Soutenir KompoZer
Normalement, le bouton "Editer" devrait être grisé si la page courante n'a pas encore été sauvegardée sur le disque dur.Do-IT a écrit :bouton Editer grisé mais F6 fonctionne (sur nouveau fichier) [...]
F6 ou F7 sur un nouveau fichier qui provoque l'enregistrement (normal), mais sans suite apres l'enregistrement.
F6 et F7 devraient être grisés en même temps que "Editer" mais j'ai oublié de l'implémenter...
Bref, c'est prévu pour que l'utilisateur enregistre sa page courante (au moins une fois) AVANT de lancer Tidy ou l'éditeur ; je vais faire en sorte que ça fonctionne aussi sur les nouveaux fichiers.
HandCoder ne corrige ça qu'au moment de lancer Tidy.Do-IT a écrit :toujours des br dans les pre (bizarre)
Si il y a toujours des BR dans les PRE après un F7, poste-moi le source de ta page STP.
bizarre. Je vais essayer de reproduire ce bug.Do-IT a écrit :ecrasement du fichier dans l'onglet par l'ouverture d'un autre fichier (apres open with)
Oui, c'est Tidy qui décale les scripts PHP à partir de leur deuxième ligne. Et non, je n'ai pas vu d'option qui permette d'ignorer le contenu des <?php ... ?>.Do-IT a écrit :Pour le php, c'est tidy qui provoque le decalage ? Y'a pas moyen de lui dire d'ignorer ce qui est entre les balises php ? Ou de réinjecter le code php dans le fichier apres un tidy.
Parceque ni les decalages, ni aucune indentation ne sont souhaitables. Et moi j'ai frequement 50 lignes de code php d'affilées.
Le mieux serait de modifier Tidy, je jetterai un coup d'oeil au code source ces jours-ci.
En dernier recours, je pourrais lancer une correction du décalage après Tidy, mais cette méthode aurait deux gros inconvénients : ça doublerait le temps de sauvegarde, et ça me compliquerait énormément le support de Tidy sous MacOS X (qui n'est déjà pas brillant !).
Si tu as 50 lignes de code PHP, tu as vraisemblablement besoin de conserver ton indentation, par ex :
Code : Tout sélectionner
if (test)
for(i=0; i<100; i++)
echo(".");
else
echo("no test.");
Je ne laisse pas tomber cette histoire de décalage des scripts PHP, mais je continue à chercher une méthode plus "saine".
Ca, c'est LE point à surveiller attentivement. Si tu as un fichier PHP qui est corrompu par Nvu + HandCoder, poste-moi sa source STP.Do-IT a écrit :j'ai un fichier php qui a perdu un paquet de ligne php, faut que je verifie mes archives chez moi.
Il pleut chez toi aussi ?Do-IT a écrit :Je ferais des tests répétitifs ce we.

KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
La beta du week-end : HandCoder-20051106-fr
Peu de nouveautés :
Peu de nouveautés :
- quelques modifications pour permettre la compatibilité avec NsmConText ;
- j'ai implémenté une horreur qui réinjecte le code PHP de Nvu dans le code reformatté par Tidy, s'il y a des scripts PHP de plus d'une ligne... C'est du provisoire, en attendant de patcher Tidy, et de trouver une méthode de lancement de Tidy sous MacOS X.
KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
HandCoder-20051106-fr
tidy supprime les balises vide ex: <p></p> <h1></h1>
Si j'ai bien compris l'histoire des pre, nvu remet chaque fois les br supprimer par tidy.
a l'ouverture de nvu, bouton editeur F6 F7 ne sont pas grisés.
C'est tout pour l'instant, j'en garde un peu pour plus tard.
Il fait toujours soleil en Alsace, la plus belle région de France !
Et le forum est toujours a l'heure d'été.
tidy supprime les balises vide ex: <p></p> <h1></h1>
Si j'ai bien compris l'histoire des pre, nvu remet chaque fois les br supprimer par tidy.
a l'ouverture de nvu, bouton editeur F6 F7 ne sont pas grisés.
C'est tout pour l'instant, j'en garde un peu pour plus tard.
Il fait toujours soleil en Alsace, la plus belle région de France !
Et le forum est toujours a l'heure d'été.
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Soutenir KompoZer
Oui, pour une raison de conformité que je n'ai pas bien comprise.Do-IT a écrit :tidy supprime les balises vide ex: <p></p> <h1></h1>
Il y a une option pour ne pas supprimer les balises vides : --drop-empty-paras no
Alternative : mets un espace insécable ( ) dans tes balises vides si tu veux les conserver.
Oui. Précisément, il remplace les fins de ligne par des <br />.Do-IT a écrit :Si j'ai bien compris l'histoire des pre, nvu remet chaque fois les br supprimer par tidy.
C'est équivalent dans le navigateur, mais c'est particulièrement pénible pour l'édition en mode texte.
Moi aussi j'en garde un peu pour plus tardDo-IT a écrit :a l'ouverture de nvu, bouton editeur F6 F7 ne sont pas grisés.

KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
tidy est faché avec les feuilles de style interne
<style type="text/css">
/*<![CDATA[*/
pre { color: rgb(255, 0, 0);
}
/*]]>*/
</style>
ou
<style type="text/css">
/*<![CDATA[*/
p { color: rgb(255, 0, 0);
}
/*]]>*/
</style>
Rudy
<style type="text/css">
/*<![CDATA[*/
pre { color: rgb(255, 0, 0);
}
/*]]>*/
</style>
ou
<style type="text/css">
/*<![CDATA[*/
p { color: rgb(255, 0, 0);
}
/*]]>*/
</style>
Rudy
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Soutenir KompoZer
Oui, il inclut les feuilles de style internes dans une balise CDATA.
C'est gênant ? Je veux dire, ça pose un problème sous Nvu ?
C'est gênant ? Je veux dire, ça pose un problème sous Nvu ?
KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Qui est en ligne ?
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité