begin process at 2012 02 16 22:53:29
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > GÉNÉRATION EN HTML DE SOURCES VB, AVEC COLORATION SYNTAXIQUE ET HYPERLIENS

GÉNÉRATION EN HTML DE SOURCES VB, AVEC COLORATION SYNTAXIQUE ET HYPERLIENS


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Classé sous :coloration, syntaxique, html, hyperliens, parsing Niveau :Initié Date de création :10/07/2006 Vu / téléchargé :4 945 / 802

Auteur : jean_marc_n2

Ecrire un message privé
Site perso
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Ce programme permet de générer l'ensemble d'un projet VB (forms, modules) sous forme de pages html. Le code HTML généré inclut la coloration syntaxique (comme d'ans l'DIE de VB).

La valeur ajoutée par rapport aux autres codes similaires est la génération dans le code de liens  hypertexte permettant de naviguer d'un appel de fonction vers la focntion correspondante, comme on le fait dans l'IDE avec la focntion "Goto Definition".

De nombreuses options sont disponibles: ajout de numéros de ligne, ajout d'un page de démarrage permettant d'accéder auxc différentes feuilles et modules, ajout sur chaque page d'un lien hyper texte vers les autres pages, etc.

Cette source est dérivée d'une de mes sources précédentes: http://www.vbfrance.com/codes/GENERATION-HTML-SOUR CES-VB-AVEC-COLORATION-SYNTAXIQUE_36087.aspx. Cependant, elle est à mon avis assez différente pour justifier d'être ajouter ici comme une nouvelle source.

D'un point de vue technique, le programme utilise une table de hachage pour un accès rapide aux mots clés et fonctions. L'implémentation de la table de hachage est dans un module séparé pour permettre sa réutilisation.

Le programme est très performant en terme de vitesse: 2 secondes pour 10 pages représentant +/- 10.000 lignes de code.


 Conclusion

Le code est clairement structuré et très abondamment commenté. Des améliorations sont surement possibles, en particulier l'IHM. Toutes vos remarques sont bienvenues.


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture ACTUALITÉS EN TEMPS RÉEL GRÂCE AUX FLUX RSS
Source avec Zip DIFFÉRENCE ENTRE + (ARITHMÉTIQUE) ET OR (BITWISE)
COMPACTAGE D'UNE SÉRIE NUMÉRIQUE
Source avec Zip Source avec une capture ESPIONNER / SURVEILLER L'ACTIVITÉ RÉSEAU SUR VOTRE MACHINE O...
Source avec Zip Source avec une capture JOUER AU LITERATI, TEXTEXPRESS, LE MOT LE PLUS LONG, ETC!

 Sources de la même categorie

Source avec Zip TEXTBOX EN NUMÉRIQUE par 320C
Source avec Zip DÉCIMAL TO HEXDECIMAL par loulou27200
SOUS-TITRES : INCRÉMENTATION DE TOUTES LES CHAÎNES DE CARACT... par ALMIRA
Source avec Zip Source avec une capture EVALUER UN NOMBRE D'OBJETS AVEC UNE BALANCE ET DEUX ÉCHANTIL... par lexsty
Source avec Zip Source avec une capture PETIT LOGICIEL DE DEVIS SANS BD par lololilizozo

 Sources en rapport avec celle ci

GÉNÉRATEUR DE MAIL OUTLOOK AVEC MISE EN FORME VIA UNE SYNTAX... par 8Tnerolf8
Source avec Zip Source avec une capture COLORATION SYNTAXIQUE par Cacophrene
Source avec Zip Source avec une capture COLORISATION SYNTAXIQUE DU LANGAGE VB EN FORMAT HTML (POUR L... par mortalino
Source avec Zip Source avec une capture Source .NET (Dotnet) EDITEUR SYNTAXIQUE [VB2005] par anthonygego
Source avec Zip Source avec une capture GÉNÉRATION EN HTML DE SOURCES VB, AVEC COLORATION SYNTAXIQUE par jean_marc_n2

Commentaires et avis

Commentaire de Proger le 11/07/2006 01:54:38

Optimisation : à quoi bon faire du hashing si le résultat est de type string ? tu fais une sympathique gestion de cette table mais tu lui tire une balle dans le pied avec toutes ces comparaisons de strings.
M'enfin si ca ne tenais qu'a moi je chargerai directement les fichiers de code à convertir dans des tableau de bytes et n'utiliserai le type string que lors de la fusion html :)

Commentaire de jean_marc_n2 le 11/07/2006 09:03:48

Hello,

Merci pour ton commentaire. Il n'y a pas vraiment "balle dans le pied" dans la mesure ou le nombre de comparaisons de string est tout petit :-) Il suffit de voir les perfs pour s'en convaincre :-)
A l'occasion, je ferais un petit bench pour voir ce que l'on gagne avec des tableaux de bytes.
Merci encore!
Amicalement,

Commentaire de Renfield le 11/07/2006 10:07:49 administrateur CS

sympa...

un commondialog serait un plus non négligeable, pour la selection du projet.
il serait sympa de pouvoir charger les VBG.

les prototypes de fonctions ne sont pas coloriées ( ByRef xxx As Single)  par exemple...

il faudrait pouvoir spécifier un repertoire de sortie, et que tout se mette même dans un sous repertoire.
tu ourrais alors ajouter des images, des css...

tu pourrais stocker dans kw les mots en majuscule, directement.

p = InStr(1, s, "function " ,vbTextCompare)
est plus rapide que
p = InStr(LCase$(s), "function ")

ta gestion d'erreur masque des erreurs de codage...
   If (i <> 0) And ((LCase(t(i - 1)) = "function") Or (LCase(t(i - 1)) = "sub")) Then

ton test i<> 0 ici, n'empeche pas VB de tenter d'acceder à t(-1)

de même, dans :
   p = InStr(1, t(i), wordToHilight, vbTextCompare)
   If p = 1 Then    <-  mettre 0 ici, pas 1

je regarderai le reste plus tard ^^

Commentaire de ciberrique le 11/07/2006 13:30:36

Je trouve ca tres bon... Vraiment bien, je garde.
Bravo.

Commentaire de ghuysmans99 le 11/07/2006 15:09:10

je suis exactement du même avis que Renfield, un CommonDialog serait le bienvenu.

Commentaire de Renfield le 11/07/2006 15:27:11 administrateur CS

j'ai repris mes tests....

il serait bien que la sortie HTML soit indentée automatiquement,

il y a une incohérence :
tu utilise les mots en majuscule, dans ton HASH, mais clean_symbol faisait un LCase...
des mots n'étaient pas trouvés, certaines fois.

tes liens ne fonctionnaient pas, tu mettais
<a name="#maFonction">    et a cause du #, l'ancre ne fonctionnait pas.
de même, tu écrivait le nom de l'ancre (en majuscules, donc) dans le texte des liens, ce qui fait pas très très joli ^^

j'ai corrigé ce point également:
    Print #g, header;
    If (i <> 0) And ((LCase(t(i - 1)) = "function") Or (LCase(t(i - 1)) = "sub")) Then
        Print #g, "<a name=""" & wordToHilight & """ >";
        szColor = COLOR_SYMB_A
    Else
        ' we need to insert an hyperlink
        module = Mid$(module, 1, InStr(module, ".")) & "html"
        Print #g, "<a href=""" & module & "#" & wordToHilight & """>";
        szColor = COLOR_SYMB_H
    End If
    Print #g, "<font color=""" & szColor & """>" & Left$(sBuffer, Len(wordToHilight)) & "</font>";

Les appels d'API ne sont pas redirigés vers leur déclaration

Space,ElseIf,LSet,Until ne sont pas dans ta liste de mots


j'ai également utilisé IsInHashTable_special dans IsKW
et supprimé le module = "" dans IsInHashTable_special

avec quelques optimisations a gauche a droite, je suis passé, pour un projet donné (en mode VB) de 360ms à 170ms, en moyenne

exemple d'optimisation significative :

                If (Left$(sBuffer, 1) = "'") Or (comment) Or _
                   (continuation_line_found And previous_was_comment) Then
                  
                    ' replace < and > by their html equivalent
                    If InStrB(sBuffer, "&lt;") > 0 Then
                        sBuffer = Replace(sBuffer, "&lt;", "&amp;lt;")
                    End If
                    If InStrB(sBuffer, "&gt;") > 0 Then
                        sBuffer = Replace(sBuffer, "&gt;", "&amp;gt;")
                    End If
                    If InStrB(sBuffer, "<") > 0 Then
                        sBuffer = Replace(sBuffer, "<", "&lt;")
                    End If
                    If InStrB(sBuffer, ">") > 0 Then
                        sBuffer = Replace(sBuffer, ">", "&gt;")
                    End If

et pareil dans le   Else    ' else: normal text

si le code 'corrigé' te tente, contacte moi par MP

Commentaire de katsankat le 11/07/2006 15:45:37

Salut :)
Juste un mot pour signaler beaucoups de mots en double ou en triple dans la liste de mots.

Commentaire de jean_marc_n2 le 11/07/2006 19:01:12

Hello,

merci à tous de vos commentaires.

=> Renfield, merci en particulier pour ta revue de code! Q: Les appels d'API chez moi sont bien redirigés, voir un exemple ici: C:\files\vb\vbfrance\syntaxcolor2\frmMain.html (cliquer sur ShellExecute dans COmmand2, par exemple). Sans doute un cas particulier que je ne vois pas?

Je posterais après mes vacances une version corrigée!



Commentaire de jean_marc_n2 le 11/07/2006 19:14:00

Oups, voici le bon lien pour tester les saut d'API:

http://users.skynet.be/candide/test/frmMain.html

Note: avec IE, le fait que les ancres aient un # devant le nom ne géne pas, c'est pour cela que les liens fonctionnent et que je n'ai pas vu l'erreur.

Commentaire de Renfield le 12/07/2006 00:19:30 administrateur CS

Effectivement, j'utilises FireFox ^^

Commentaire de tinux le 16/07/2006 14:56:31

Arff, j'ai besoin d'un soft du genre hélas j'avais pas de temps pour le faire, et là j'en vois une, SUPER !!! Hélas, mon bohneur est stoppé net par mon Visual Studio 2005 .NET....... damn !

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Coloration syntaxique [ par Celebyon ] J aimerasi faire un ti prog pour me remplacer mon notepad kan je prog en html, php et *script, avec une coloration syntaxique ki me soit propre pour l coloration syntaxique [ par julwoko ] Bonjour, Je voulais savoir si c'est possible d'avoir une coloration syntaxique dans un JTextComponent &#224; la mani&#232;re d'un IDE en effet je vo coloration syntaxique [ par Desdinova66 ] Salut les mecs, Je suis en train de developper un editeur de scrirpts en java et g besoin d'une API permettant de realiser la coloration syntaxique d Coloration syntaxique et scintilla [ par VinceVG ] Salut,J'ai besoin d'un editeur avec coloration syntaxique multi (omni) langage. Quelqu'un a-til &#231;a (avec le source en vb6). Ou qqn a-t-il d&#233; Coloration syntaxique pour les messages sur codes-sources [ par franckydeluka ] Bonjour à tous ,voilà ça fait un petit moment maintenant que je surfe sur la vague 'codes-sources'et j'ai pu voir que lorsque cer OCX pour coloration syntaxique [ par lascolbe ] Bonjour,je suis à la recherche d'un controle OCX (type RichTextBox) performant qui integre la coloration syntaxique (si possible developpé en C++)Es c Coloration Syntaxique [ par dridri85 ] Voila, je cherche a faire de la coloration syntaxique dans un RichTextBox, mais je n'ai aucune idée de comment m'y prendre.J'ai cherché dans les codes [CS]Coloration syntaxique et mise en forme des posts [ par casy ] 3 points : [*] Dans la liste des codes pour la coloration syntaxique, il manque l'item SQL pour la colorisation de requêtes SQL. On peut toujours séle Coloration syntaxique [ par spenky ] Bonjour, Je doit &#233;crire un &#233;diteur Java en Java. J'ai presque fini mais il me manque la coloration dynamique des mots cl&#233;s. Merci de me Coloration syntaxique [ par NHenry ] BonjourEn recherchant la CSLib, j'ai vu un lien sur http://tools.codes-sources.com/colorizeCode.aspxJe me suis dit c'est super, je vais tester de


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales