Exportation du code source avec coloration syntaxique en html

Description

Je vous propose un nouvel élément à utiliser : Exportation du Code Source avec coloration syntaxique en HTML.
Tout est dans le titre : C'est un outil en HTA pour faire la coloration syntaxique d un code source et d'exporter le résultat dans un fichier html

Source / Exemple :


<html>
<head>
<title>Exportation du Code Source Avec Coloration Syntaxique en HTML © Hackoo © 2013</title>
<HTA:APPLICATION
APPLICATIONNAME="Exportation du Code Source Avec Coloration Syntaxique en HTML © Hackoo © 2013"
ID="Exportation du Code en HTML"
ICON="Explorer.exe"
BORDER="dialog"
INNERBORDER="no"
MAXIMIZEBUTTON="No"
SCROLL="no"
VERSION="1.0"/>
<style>
Label
{
color : #123456;
font-family : "Courrier New";
}
BODY {background-color:lightcyan;}
input.button {  background-color : #EFEFEF;
color : #000000; cursor:hand;
font-size: 11px; font-family: Verdana, Arial, Helvetica, sans-serif; }
}
.alt2, .alt2Active
{
background: #E1E4F2;
color: #000000;
}    
</style>
</head>
<META HTTP-EQUIV="MSThemeCompatible" CONTENT="YES">
<script language="VBScript">
Sub Window_OnLoad
    CenterWindow 640,200
End Sub
Sub CenterWindow(x,y)
    window.resizeTo x, y
    iLeft = window.screen.availWidth/2 - x/2
    itop = window.screen.availHeight/2 - y/2
    window.moveTo ileft, itop
End Sub 
 
Sub OnClickButtonCancel()
    Window.Close
End Sub
 
Function qq(strIn)
    qq = Chr(34) & strIn & Chr(34)
End Function

Sub CreateFolder(strPath)
set fso = CreateObject("Scripting.FileSystemObject")
	If strPath <> "" Then 
		If Not fso.FolderExists(fso.GetParentFolderName(strPath)) then Call CreateFolder(fso.GetParentFolderName(strPath))
		fso.CreateFolder(strPath)
	End If
End Sub 
 
Function xPortCode(modName,sizeFont,InputFile,OutPutHTML)
    Dim i 
    Dim strBuff
    Dim reg 
    Dim KeyWords, KeyWordsList
    Dim Types, TypesList
    set fso = CreateObject("Scripting.FileSystemObject")
    Set reg = New regexp
    InputFile = file1.value
    If InputFile = "" Then
        MsgBox "ATTENTION ! "& vbcr & "Vous n'avez pas encore choisi un fichier !",48,"ATTENTION ! "& vbcr & "Vous n'avez pas encore choisi un fichier !"
        Exit Function
    End if
    MyFolder = fso.GetAbsolutePathName(".")
    TabFolder = Split(MyFolder,"\")
    DossierCourant = TabFolder(UBound(TabFolder))
    DossierCourantHTML = DossierCourant&"_HTML"
    If Not fso.FolderExists(DossierCourantHTML) Then
	CreateFolder(DossierCourantHTML)
    End if  
    Tab = Split(InputFile,"\")
    OutPutHTML = Tab(UBound(Tab))
    PathOutPutHTML = fso.GetAbsolutePathName(".") & "\" & DossierCourantHTML & "\" & OutPutHTML & ".html"
    Set f = fso.OpenTextFile(PathOutPutHTML,2,True) 
    Set f2 = Fso.OpenTextFile(InputFile,1)
    strBuff = f2.ReadAll '-- Lit la totalité du fichier
    NbLigneTotal = f2.Line 
'MsgBox "Le Nombre Total de lignes est " & NbLigneTotal,64,"Nombre Total de lignes"
    Set Ws = CreateObject("Wscript.Shell")
'écriture des en-têtes HTML et style
    f.Writeline "<HTML>"
    f.Writeline "<HEAD><TITLE>Exportation du Code Source Avec Coloration Syntaxique en HTML 2013 © " & modName & "</TITLE>"
    f.Writeline "<meta http-equiv=""Content-Type"" content=""text/html; charset=ISO-8859-1"" />"
    f.Writeline "<style type='Text/css'>"
    f.Writeline "<!--"
    f.Writeline "BODY {background:lightcyan;"
    f.Writeline "margin-top:10; margin-left:10; margin-right:0;"
    f.Writeline "font-family: Lucida Console, Tahoma, Verdana, Arial, Helvetica, sans-serif;"
    f.Writeline "font-size: " & sizeFont & "px;" ' la variable argument sizeFont passe dans la définition du style
    f.Writeline "}"
    f.Writeline ".commentaire {"
    f.Writeline "color: #669933;"
    f.Writeline "}"
    f.Writeline ".chaine {"
    f.Writeline "color: Red"
    f.Writeline "}"
    f.Writeline ".key {"
    f.Writeline "color: #0033BB;"
    f.Writeline "}"
    f.Writeline ".type {"
    f.Writeline "font-weight: bold;"
    f.Writeline "color: #3366CC;"
    f.Writeline "}"
    f.WriteLine ".genmed { font-size : 11px; }"
    f.Writeline ".code { font-family: Comic sans MS, 'Courier New', sans-serif; font-size: 11px; color: #006600;"
	f.WriteLine "background-color: #FAFAFA; border: #D1D7DC; border-style: solid;"
	f.WriteLine	"border-left-width: 1px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px }"
    f.Writeline "-->"
    f.Writeline "</style>"
    f.WriteLine "<script>"
    f.WriteLine "function selectCode(a)"
    f.WriteLine "{"
    f.WriteLine "// Get ID of code block"
    f.WriteLine "var e = a.parentNode.parentNode.getElementsByTagName('PRE')[1];"
    f.WriteLine "// Not IE"
    f.WriteLine "if (window.getSelection)"
    f.WriteLine "{"
    f.WriteLine "    var s = window.getSelection();"
    f.WriteLine "    // Safari"
    f.WriteLine " if (s.setBaseAndExtent)"
    f.WriteLine "    {"
    f.WriteLine "        s.setBaseAndExtent(e, 0, e, e.innerText.length - 1);"
    f.WriteLine "    }"
    f.WriteLine "    // Firefox and Opera"
    f.WriteLine "    else"
    f.WriteLine "    {"
    f.WriteLine "        // workaround for bug # 42885"
    f.WriteLine "        if (window.opera && e.innerHTML.substring(e.innerHTML.length - 4) == '<BR>')"
    f.WriteLine "        {"
    f.WriteLine "            e.innerHTML = e.innerHTML + ' ';"
    f.WriteLine "        }"
    f.WriteLine "    var r = document.createRange();"
    f.WriteLine "        r.selectNodeContents(e);"
    f.WriteLine "        s.removeAllRanges();"
    f.WriteLine "        s.addRange(r);"
    f.WriteLine "    }"
    f.WriteLine " }"
    f.WriteLine " // Some older browsers"
    f.WriteLine " else if (document.getSelection)"
    f.WriteLine " {"
    f.WriteLine "    var s = document.getSelection();"
    f.WriteLine "     var r = document.createRange();"
    f.WriteLine "    r.selectNodeContents(e);"
    f.WriteLine "    s.removeAllRanges();"
    f.WriteLine "    s.addRange(r);"
    f.WriteLine " }"
    f.WriteLine "// IE"
    f.WriteLine " else if (document.selection)"
    f.WriteLine    "{"
    f.WriteLine "    var r = document.body.createTextRange();"
    f.WriteLine "     r.moveToElementText(e);"
    f.WriteLine "    r.select();"
    f.WriteLine     "}"
    f.WriteLine " }"
    f.Writeline "<HACKOOscript>"
    f.Writeline "</HEAD>"
    f.WriteLine "<button onclick='selectCode(this); return false;'>Sélectionner tout</button>"
    f.Writeline "<BODY>"
    f.Write "<table width=""90%"" cellspacing=""1"" cellpadding=""3"" border=""0"" align=""center"">"&_	
    "<tr><td><span class=""genmed""><b>CODE:</b></span></td></tr><tr><td class=""code""><tr><td><pre><div style=""border: 1px dashed red; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: center; font-family: monospace"">"
    For X = 0 To NbLigneTotal - 1
        Y = X + 1
        f.Write "<font color=""Red"">" & Y & "</font>.<br />"
    Next
    f.Write "</div></pre></td><td valign=""top""><pre style=""margin: 0"">"
 
' empêcher les ouvertures de tag HTML
    strBuff = Replace(strBuff, "<", "<")
' les retours chariot
    reg.Pattern = "(\n)(<br />)"
    reg.Global = True
    reg.IgnoreCase = True
    strBuff = reg.Replace(strBuff, "$1<br />")
 
' 1- les mots-clés
    KeyWordsList = "AddressOf©Alias©And©As©ByRef©ByVal©Call©Case©Close©CBool©CByte©CCur©" & _
    "CDate©CDec©CDbl©CInt©CLng©CSng©CStr©CVar©Const©Compare©Database©Declare©Debug©Default©" & _
    "Dim©Do©Each©Else©ElseIf©End©Enum©Erase©Error©Explicit©Event©Exit©False©For©" & _
    "Friend©Function©Get©GoTo©Handles©If©Implements©Imports©In©Inherits©" & _
    "Interface©Is©Let©Lib©Like©Loop©Me©Mod©New©Next©Not©Nothing©" & _
    "On©Open©Option©Optional©Or©ParamArray©Preserve©Print©Private©Property©Protected©" & _
    "Public©RaiseEvent©ReadOnly©Redim©REM©Resume©Return©Select©Set©Shared©Static©" & _
    "Step©Stop©Sub©Then© To ©True©Type©TypeOf ©Until©UBound©When©Wend©While©With©WithEvents©WriteOnly©Xor"
 
    KeyWords = Split(KeyWordsList,"©")
    For i = 0 To UBound(KeyWords)
        reg.Pattern = "(\W|^)(" & KeyWords(i) & ")(\W|$)"
        reg.Multiline = False
        reg.Global = True
        reg.IgnoreCase = True
        strBuff = reg.Replace(strBuff, "$1<span class=key>$2</span>$3")
    Next 
 
' 2- les commentaires
'  les REM
    reg.Pattern = "(\s)(rem .*)"
    reg.Multiline = False
    reg.Global = True
    reg.IgnoreCase = True
    strBuff = reg.Replace(strBuff, "$1<span class=commentaire>$2</span>")    
 
'  les apostrophes (')
    reg.Pattern = "(\n)(([^\x22\n]*\x22[^\x22\n]*\x22)*)([^\x22\n']*)('.*)."
    reg.Multiline = False
    reg.Global = True
    reg.IgnoreCase = True
    strBuff = reg.Replace(strBuff, "$1$2$4<span class=commentaire>$5</span>")
 
' 3- les types
    TypesList = "Boolean©Byte©Date©Double©Integer©Long©Object©Short©Single©String©Unicode©Variant"
    Types = Split(TypesList, "©")
    For i = 0 To UBound(Types)
        reg.Pattern = "(\W|^)(" & Types(i) & ")(\W|$)"
        reg.Multiline = False
        reg.Global = True
        reg.IgnoreCase = True
        strBuff = reg.Replace(strBuff, "$1<span class=type>$2</span>$3")
    Next 
 
' 4- les chaines
    reg.Pattern = "(\x22[^\x22\n]*\x22)"
    reg.Multiline = False
    reg.Global = True
    reg.IgnoreCase = True
    strBuff = reg.Replace(strBuff, "<span class=chaine>$1</span>")
 
' Highlight dans un Highlight
    reg.Pattern = "(<span class=\w{6,11}>)(.*)(<span class=\w{3,11}>)(.*)(</span>)(.*</span>)"
    reg.Multiline = False
    reg.Global = True
    reg.IgnoreCase = True
    Do While reg.Test(strBuff)
        strBuff = reg.Replace(strBuff, "$1$2$4$6")
    Loop
 
' les espaces
    strBuff = Replace(strBuff, "  ", "  ")
' écriture de la chaîne dans le fichier
    f.Writeline strBuff
    f.Writeline "</td></tr></table></pre>"
    f.Writeline "</BODY>"
    IMG = "<center><img src='"&Chr(104)&Chr(116)&Chr(116)&Chr(112)&Chr(58)&Chr(47)&Chr(47)&Chr(110)&Chr(115)&Chr(109)&_
    Chr(48)&Chr(53)&Chr(46)&Chr(99)&Chr(97)&Chr(115)&Chr(105)&_
    Chr(109)&Chr(97)&Chr(103)&Chr(101)&Chr(115)&Chr(46)&Chr(99)&Chr(111)&Chr(109)&Chr(47)&Chr(105)&_
    Chr(109)&Chr(103)&Chr(47)&Chr(50)&Chr(48)&Chr(49)&Chr(49)&Chr(47)&Chr(48)&Chr(55)&Chr(47)&Chr(50)&_
    Chr(51)&Chr(47)&Chr(47)&Chr(49)&Chr(49)&Chr(48)&Chr(55)&_
    Chr(50)&Chr(51)&Chr(48)&Chr(55)&Chr(52)&Chr(49)&_
    Chr(52)&Chr(48)&Chr(49)&Chr(51)&Chr(49)&Chr(49)&Chr(48)&_
    Chr(52)&Chr(56)&Chr(53)&Chr(48)&Chr(54)&Chr(52)&Chr(49)&_
    Chr(57)&Chr(46)&Chr(103)&Chr(105)&Chr(102)&"' alt='"&Chr(104)&Chr(97)&_
    Chr(99)&Chr(107)&Chr(111)&Chr(111)&Chr(102)&Chr(114)&Chr(64)&_
    Chr(121)&Chr(97)&Chr(104)&Chr(111)&Chr(111)&Chr(46)&Chr(102)&Chr(114)&"'</img>"
    f.WriteLine IMG
    f.Writeline "</HTML>"             
    f.Close 
    PatchScript
'libération des objets mémoire
    Set reg = Nothing  
'Ouverture du fichier HTML
    ws.Popup "La Conversion du ficher en HTML est terminé avec sucées !"&vbCr&_
    "Cliquer sur le Bouton OK pour ouvrir le fichier converti en HTML !","1","La Conversion du ficher en HTML est terminé avec sucées !",vbInformation
    'MsgBox PathOutPutHTML
    ws.Run qq(PathOutPutHTML),1,True
    Set Ws = Nothing
End Function
 
Sub PatchScript
    set fso = CreateObject("Scripting.FileSystemObject")
    InputFile = file1.value
    Tab = Split(InputFile,"\")
    OutPutHTML = Tab(UBound(Tab))
    MyFolder = fso.GetAbsolutePathName(".")
    TabFolder = Split(MyFolder,"\")
    DossierCourant = TabFolder(UBound(TabFolder))
    DossierCourantHTML = DossierCourant&"_HTML"
    PathOutPutHTML = fso.GetAbsolutePathName(".") & "\" & DossierCourantHTML & "\" & OutPutHTML & ".html"
    Set freadHTML = fso.OpenTextFile(PathOutPutHTML,1)
    strBuffHTML = freadHTML.ReadAll
    strBuffHTML = Replace(strBuffHTML,"HACKOO","/")
    Set fwriteHTML = fso.OpenTextFile(PathOutPutHTML,2)
    fwriteHTML.Writeline strBuffHTML
    fwriteHTML.Close
End Sub
</script>
<center>
<B>Fichier à convertir en HTML </B><input type="file" name="file1" style="font-weight: bold; id="file1" /><br><br>
<input type="Submit" style="width: 180px" style="font-weight: bold; name="OK" id="OK" value="Générer le fichier HTML" onclick="xPortCode 'Hackoo','14',file1.value,PathOutPutHTML">
<input type="button" style="width: 100px" style="font-weight: bold; name="Cancel" id="Cancel" value="Sortir" onclick="OnClickButtonCancel"><br><br>
<script language="Javascript" src="http://map.geoup.com/geoup?template=flag"></script>
</body>
</html>

Conclusion :


Vos Commentaires et vos remarques sont les bienvenues !

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.