UNE CLASSE DE COLORATION SYNTAXIQUE MULTILANGAGE

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 22 juil. 2005 à 18:44
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010 - 4 juin 2008 à 22:31
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/32837-une-classe-de-coloration-syntaxique-multilangage

surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
4 juin 2008 à 22:31
youps, c'était la ligne 254 et pas 2544, voila que je bégaye du clavier.
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
4 juin 2008 à 22:29
J'allait oublié les jolies petites étoiles.
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
4 juin 2008 à 22:28
Ta classe est vraiment "classe" lol, je l'utilise pour écrire :
http://sourceforge.net/projects/rpmspecmanager/
Un logiciel opensource, j'ai l'intention de la proposer a l'équipe Mono ou de collaborer avec eux sur la partie RPM, m'autorise tu as l'utiliser dans le cadre de leur licence MIT X11 ?
Puis-je l'utiliser dans le cadre OpenSource du projet RpmSpecManager ?

Une petite modif qui évite un planton avec un fichier texte "pollué" par caractères Null ((char)0) :
fichier principale de la dll ligne 2544
xmlString = xmlString.Replace("\", "\\\").Replace("{", "\\{").Replace("}", "\\}");
Devient
xmlString = xmlString.Replace("\", "\\\").Replace("{", "\\{").Replace("}", "\\}").Replace(((char)0).ToString(),string.Empty);
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
21 août 2007 à 11:07
il faut ajouter la référence à System.Web.dll sur ton projet.
Ca permet de transformer les < en <
Utilisateur anonyme
21 août 2007 à 11:05
Salut salut
Merci pour ta source.
Ta source est très intéressante, mais j'ai un problème avec le "HttpUtility", je ne comprend pas vraiment a quoi il sert! quand je lance le programme, l'erreur est la suivante :
Erreur 1 Le nom 'HttpUtility' n'existe pas dans le contexte actuel
C'est une erreur simple d'habitude, c'est un problème de déclaration, mais la je ne vois pas étant donné que dans ta source il n'y a pas ce porblème, et j'ai repris ta classe telle qu'elle est!
Merci de votre aide!
A bientôt!
cs_Zeroc00l Messages postés 367 Date d'inscription lundi 1 avril 2002 Statut Membre Dernière intervention 11 février 2010
28 déc. 2006 à 23:39
J'allais pas m'amuser à te faire un exemple pour chacun des types de sortie.
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
28 déc. 2006 à 18:05
le but n'est pas créer du RTF... mais toute sorte de sortie... html, rtf, xml, TeX...
cs_Zeroc00l Messages postés 367 Date d'inscription lundi 1 avril 2002 Statut Membre Dernière intervention 11 février 2010
28 déc. 2006 à 15:19
C'etait pour dire que j'aurais aimé avoir un truc comme ca :

TonComposant.Language = "XML"; // ou bien un enum
MonRichEdit.Rtf = TonComposant.Trait(MonTexte);

ou même :

MonRichEdit.Rtf = TonComposant.Trait("XML", MonTexte);
(là je cherche la petite bete)
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
28 déc. 2006 à 07:43
Il est possible qu'une regle ne fonctionne pas comme elle devrait.
j'utilise ce code surtout en C#.

Plus de 2 lignes... oui. Ca fait 3 :)
cs_Zeroc00l Messages postés 367 Date d'inscription lundi 1 avril 2002 Statut Membre Dernière intervention 11 février 2010
27 déc. 2006 à 22:46
Actuellement je suis oblige de faire (source tiré de ton code source d'exemple) :

vbMaf.Utils.SyntaxHilighting.Highlightor hlight =
new vbMaf.Utils.SyntaxHilighting.Highlightor("xml", Application.StartupPath + @"\langageDefinition.xml");

string xml = hlight.HighLight(mon_texte);
MonRichEdit.Rtf = hlight.Export(vbMaf.Utils.SyntaxHilighting.OutputType.Rtf);

Ce qui fait plus de deux lignes...

---------------------------

Concernant l'erreur entre les regles, je t'assure qu'il y a un probleme .. Les commentaires ne sont pas colorés en vert ! :(
J'ai viré la coloration des delimiters; le noir me convient parfaitement... donc ca marche :) !
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
21 déc. 2006 à 20:34
hop hop hop... le fonctionnement que tu expliques à la fin est celui qui est fait dans le code.

Maintenant, ce que tu fais du HighLighter... dans une lib, une classe... ce que tu veux !

Séb
cs_Zeroc00l Messages postés 367 Date d'inscription lundi 1 avril 2002 Statut Membre Dernière intervention 11 février 2010
21 déc. 2006 à 11:59
Hello :)

Avant tout merci pour cette source.

---------------------------

Je PRECISE à tout le monde que la coloration ne se fait pas en live,
il faut clicquer sur un bouton pour la raffraichir.

---------------------------

Une petite CRITIQUE perso :

j'utilise ton code pour colorer du xml que je génère (debug).
Le top aurait été d'avoir le code du highlighter dans une lib.

Ainsi on aurait pu le prendre directement dans notre projet.
et DEUX ligne de code :
une pour wrapper un RichTextBox que l'on crée sur une form
une autre pour colorer le texte dans le richtextbox.

---------------------------

Une petite ERREUR :

Dans le fichier "langageDefinition.xml",
les définitions pour le xml sont correctes mais ne marche pas.
La règle :
<Rule type="Commentaire" expression="<!--[\s\W\d\w]*?-->" />
ne fonctionne pas car la règle
<Rule type="Delimiter" expression="(</??)|(/??>)" />
prend le pas sur elle.

<!-- --> Le premier chevron est matché par la regle "Delimiter"
et ainsi le reste ne peut pas matcher "Commentaire".

J'ai pas regardé comment était géré ton code car je n'ai pas pas trop le temps.
Il faudrait donner la priorité à la règle qui mange le plus de texte,
ce qui est le bon choix dans la majorité des problèmes de ce type (conflit entre deux règles).
t_barbillon Messages postés 341 Date d'inscription mercredi 8 juin 2005 Statut Membre Dernière intervention 10 février 2009 2
23 déc. 2005 à 10:29
Dommage pour le mode "on the fly", sinon Très Très Bien.
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
23 juil. 2005 à 13:12
Cool, pas mal comme source...
Juste une petite remarque (pas importante, mais je le dis quand même) : si on colorise et que la richtextBox est vide, ça fait planter le programme ;-)
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
22 juil. 2005 à 20:26
Non, ce n'est pas assez performant dans l'état.
J'essayerai de publier une source qui fait ca prochainement.
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
22 juil. 2005 à 18:44
Wow, pas facile à faire ce genre de parser j'imagine, et en plus c'est extensible ! Est ce que c'est possible de rendre la coloration syntaxique "on the fly" avec de bonnes performances ?