Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UNE CLASSE DE COLORATION SYNTAXIQUE MULTILANGAGE


Information sur la source

Catégorie :.NET Source .NET ( DotNet ) Classé sous : parser, richtextbox, rtf, xml, xslttransform Niveau : Expert Date de création : 22/07/2005 Date de mise à jour : 22/07/2005 14:40:49 Vu / téléchargé: 8 934 / 1 190

Note :
9,5 / 10 - par 2 personnes
9,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (16)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
Que dire à part que cette classe permet d'afficher en couleur un code source.

Le principe :

Chaque langage possède une grammaire qui lui est propre. Elle est constituée de mots clés, d'expressions permettant de définir une zone comme commentaire, chaîne de caractères, etc...
La classe que je vous fournis ici, permet de mettre en surbrillance 3 langages : C#, VB(.net) et XML/HTML.

Vous pourrez vous-mêmes ajouter vos propres langages en ajoutant les caractéristiques de votre langage dans le fichier XML joint.

La classe produit une fichier XML résultant du parsing du code source et qui peut être transformé par XLST dans d'autres formats, par exemple, j'ai joint 2 fichiers qui vous permettront de transformer ce fichier XML en HTML ou en RTF.

L'exemple est clair.

Bon coding ;)

 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

22 juillet 2005 14:40:49 :
retrait des binaries du zip

Commentaires et avis

signaler à un administrateur
Commentaire de Lutinore le 22/07/2005 18:44:57 administrateur CS

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 ?

signaler à un administrateur
Commentaire de sebmafate le 22/07/2005 20:26:02 administrateur CS

Non, ce n'est pas assez performant dans l'état.
J'essayerai de publier une source qui fait ca prochainement.

signaler à un administrateur
Commentaire de Bidou le 23/07/2005 13:12:07 administrateur CS

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 ;-)

signaler à un administrateur
Commentaire de t_barbillon le 23/12/2005 10:29:40

Dommage pour le mode "on the fly", sinon Très Très Bien.

signaler à un administrateur
Commentaire de Zeroc00l le 21/12/2006 11:59:38

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="&lt;!--[\s\W\d\w]*?--&gt;" />
ne fonctionne pas car la règle
<Rule type="Delimiter" expression="(&lt;[/?]?)|([/?]?&gt;)" />
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).




signaler à un administrateur
Commentaire de sebmafate le 21/12/2006 20:34:10 administrateur CS

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

signaler à un administrateur
Commentaire de Zeroc00l le 27/12/2006 22:46:01

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 :) !

signaler à un administrateur
Commentaire de sebmafate le 28/12/2006 07:43:08 administrateur CS

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 :)

signaler à un administrateur
Commentaire de Zeroc00l le 28/12/2006 15:19: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)

signaler à un administrateur
Commentaire de sebmafate le 28/12/2006 18:05:32 administrateur CS

le but n'est pas créer du RTF... mais toute sorte de sortie... html, rtf, xml, TeX...

signaler à un administrateur
Commentaire de Zeroc00l le 28/12/2006 23:39:11

J'allais pas m'amuser à te faire un exemple pour chacun des types de sortie.

signaler à un administrateur
Commentaire de dadamagouil le 21/08/2007 11:05:27

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!

signaler à un administrateur
Commentaire de sebmafate le 21/08/2007 11:07:56 administrateur CS

il faut ajouter la référence à System.Web.dll sur ton projet.
Ca permet de transformer les < en &lt;

signaler à un administrateur
Commentaire de surfzoid le 04/06/2008 22:28:59

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);





signaler à un administrateur
Commentaire de surfzoid le 04/06/2008 22:29:31 10/10

J'allait oublié les jolies petites étoiles.

signaler à un administrateur
Commentaire de surfzoid le 04/06/2008 22:31:03

youps, c'était la ligne 254 et pas 2544, voila que je bégaye du clavier.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

RichTextBox et Rtf... [ par bigflo93 ] Salut,J'ai une RichTextBox dans laquelle je peux inserer des images. Pour cela je passe par le format Rtf.Lorsque je click sur un bouton, je recupère Parser XML [ par CMatt ] Bonjour &#224; tous! Je me suis mit r&#233;cement &#224; PHP, et dans le cadre d'un projet personnel, j'ai eu besoin de parser un fichier XML personn Récupération d'un blob pervasive et affichage dans un richtextbox [ par minnexa ] Salut,Je dois r&#233;cup&#233;rer les enregistrements d'une table &#224; partir d'une base de donn&#233;es Pervasive (v8) et les afficher dans un data Parser XML caractere speciaux dans les balises (accent, 1/4 de quadratin etc.) [ par vassily8 ] bonjour a tous, voila j'expose mon probleme puisqu'apres 1 bonnes heure de recherche sur la toile je n'ai pas vraiment trouvé de solution satisfaisant Parser de XML [ par bubbathemaster ] Bonjour,Je recherche un parser de XML simple capable de lire node par node un fichier.En effet, je dois travailler avec des fichiers XML pas toujours Inserer du text RTF dans RichTextBox [ par watcha2020 ] Bonjour à tous, je cherche tout simplement à inserer du texte au format Rtf à la fin d'une RichTextBox.j'arrive tres bien à inserer mais je n'arrive p envois au format RTF [ par phpoussin ] Bonjour à tous !Je suis sur une application client serveur qui ets en faite une sorte de chat. J'utilise une richtextbox pour affichers les message et Image dans une transformation XML->RTF ou XML->PDF [ par DeadEye0112 ] Bonjour,J'ai un problème avec les images et la transformation XSLT.Lors de la création d'un fichier (RTF ou PDF) à l'aide d'un XSLT, je réussis à mett Désérialisation xml dataset [ par hachiko49 ] Bonjour à tous,J'ai un dataset qui contient des datatables, images des tables de ma base de données.Certaines tables possèdent des champs dont la vale Modifier un xml qui exist ? [ par iian2 ] Allo,J'ai un petit probleme avec un xml je ne sas pas comment effacer des nodes pis par la suite en ajouter ? Je vais vous motrer la forme de mon xml


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,468 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.