tu as tout à fait raison Dri , il faudrait gérer un fichier préférence ,ça permet de personnaliser la page wiki.
Voici le code pourri que j'avais fait pour mettre en ligne la doc sur le site du GCN
Code : Tout sélectionner
;Gérer
;@ReferenceLink
;@FastLink
;@ConstantColor
Declare SelectionMotCle(Ligne$,MotCle$)
Global Precedent$,Suivant$,Sommaire$
Global FixeFont.l,CodeEnCours.l
#CheminWiki="D:\Wiki\"
#RepertoireCVS="D:\CVSPureBasic\Documentation\French\"
Global NewList Tampon.s()
Global NewList ListeFonction.s()
Global NewList ListeBibliotheque.s()
Global NewList ListeFichier.s()
Global NomFonction$
;Charge la liste des biblio
;Ce fichier est généré manuellement en faisant un copier/coller du sommaire de l'aide
If OpenFile(0,"ListeBiblio.bib")
While Eof(0)=0
Ligne$=LTrim(ReadString(0))
AddElement(ListeBibliotheque())
ListeBibliotheque()=Ligne$
Wend
CloseFile(0)
EndIf
;Détection de tous les fichiers "*.txt" issus du CVS
If ExamineDirectory(0, #RepertoireCVS, "*.txt")
Repeat
FileType = NextDirectoryEntry(0)
If FileType
FileName$ = DirectoryEntryName(0)
If FileType = 1 ;
AddElement(ListeFichier())
ListeFichier()=FileName$
Debug filename$
EndIf
EndIf
Until FileType = 0
EndIf
ForEach ListeFichier()
;Mémorise le fichier
If OpenFile(0,#RepertoireCVS + ListeFichier())
ClearList(Tampon())
While Eof(0)=0
Ligne$=ReadString(0)
AddElement(Tampon())
Tampon()=Ligne$
Wend
CloseFile(0)
EndIf
;Création de la liste des fonctions de la bibliothèque
ClearList(ListeFonction())
ForEach Tampon()
If FindString(Tampon(),"@Function",1)
SyntaxeFonction$=RemoveString(Tampon(), "@Function")
;Fonction retournant une valeur
Position=FindString(SyntaxeFonction$,"=",1)
If Position
temp$=Trim(Mid(SyntaxeFonction$,Position+1,Len(SyntaxeFonction$)-Position))
Else
temp$=Trim(SyntaxeFonction$)
EndIf
NomFonction$=StringField(temp$,1,"(")
AddElement(ListeFonction())
ListeFonction()=NomFonction$
EndIf
Next
;Trie la liste des fonctions
SortList(ListeFonction(),0)
;Construction des fichiers
ForEach Tampon()
If CodeEnCours=0
Ligne$=LTrim(Tampon())
Else
Ligne$=Tampon()
EndIf
;C'est pas un commentaire et pas une ligne vide
If Left(Ligne$,1)<>";" And Len(Trim(Ligne$))>0
;Cherche un mot clé
Position=FindString(Ligne$,"@",1)
;Si un mot clé est trouvé
If Position
;Recupere le MotCle
temp$=Mid(Ligne$,Position+1,Len(Ligne$)-Position)
MotCle$=StringField(temp$,1," ")
If MotCle$="OS"
MotCle$=RemoveString(Ligne$,"@",1)
EndIf
SelectionMotCle(Ligne$,MotCle$)
Else
If FixeFont
WriteString(0,"* ")
EndIf
WriteStringN(0,Ligne$)
EndIf
EndIf
Next
Next
End
Procedure SelectionMotCle(Ligne$,MotCle$)
Select MotCle$
Case "Library"
If IsFile(0)
CloseFile(0)
EndIf
;Récupère le nom de la bibliothèque
NomBibliotheque$=Trim(RemoveString(Ligne$, "@Library"))
;Création d'un fichier avec le nom de la bibliothèque
If CreateFile(0,#CheminWiki+"Lib_"+NomBibliotheque$)=0
MessageRequester("Création fichier wiki","Erreur à la création du fichier " + NomBibliotheque$,0)
End
EndIf
;Mémorise le nom du sommaire
Sommaire$="PureBasic:"+NomBibliotheque$
;écriture du menu
;Cherche la biblio dans la liste
ForEach ListeBibliotheque()
If ListeBibliotheque()=NomBibliotheque$
index=ListIndex(ListeBibliotheque())
If index>0
SelectElement(ListeBibliotheque(),index-1)
Else
LastElement(ListeBibliotheque())
EndIf
LibPrecedent$="PureBasic:"+ListeBibliotheque()
If index<CountList(ListeBibliotheque())-1
SelectElement(ListeBibliotheque(),index+1)
Else
FirstElement(ListeBibliotheque())
EndIf
LibSuivant$="PureBasic:"+ListeBibliotheque()
Break
EndIf
Next
WriteStringN(0,"{{ArticlesPlusieursPages|Sommaire=PureBasic:Manuel"+"|Précédent="+LibPrecedent$+"|Suivant="+LibSuivant$+"}} ")
Case "Overview"
WriteStringN(0,"==General==")
Case "CommandList"
WriteStringN(0,"==Sommaire des commandes==")
ForEach ListeFonction()
WriteStringN(0,"* [[PureBasic:"+ListeFonction()+" | "+ListeFonction()+"()]]")
Next
Case "Function"
;Termine le fichier en cours
If IsFile(0)
CloseFile(0)
EndIf
SyntaxeFonction$=RemoveString(Ligne$, "@Function")
;Fonction retournant une valeur
Position=FindString(SyntaxeFonction$,"=",1)
If Position
temp$=Trim(Mid(SyntaxeFonction$,Position+1,Len(SyntaxeFonction$)-Position))
Else
temp$=Trim(SyntaxeFonction$)
EndIf
NomFonction$=StringField(temp$,1,"(")
;Cherche la fonction dans la liste
ForEach ListeFonction()
If ListeFonction()=NomFonction$
index=ListIndex(ListeFonction())
If index>0
SelectElement(ListeFonction(),index-1)
Else
LastElement(ListeFonction())
EndIf
Precedent$="PureBasic:"+ListeFonction()
If index<CountList(ListeFonction())-1
SelectElement(ListeFonction(),index+1)
Else
FirstElement(ListeFonction())
EndIf
Suivant$="PureBasic:"+ListeFonction()
Break
EndIf
Next
If CreateFile(0,#CheminWiki+NomFonction$)=0
MessageRequester("Création fichier wiki","Erreur à la création du fichier " + NomFonction$,0)
End
EndIf
WriteStringN(0,"{{ArticlesPlusieursPages|Sommaire="+Sommaire$+"|Précédent="+Precedent$+"|Suivant="+Suivant$+"}} ")
WriteStringN(0,"==Syntaxe==")
New$=ReplaceString(SyntaxeFonction$,NomFonction$,"'''"+NomFonction$+"'''")
WriteStringN(0,RTrim(LTrim(New$)))
Case "Description"
WriteStringN(0,"==Description==")
Case "ConstantColor"
Ligne$=RemoveString(Ligne$,"@ConstantColor",1)
WriteStringN(0, "* " + Ligne$)
Case "ReturnValue"
WriteStringN(0, "==Valeur de retour==")
Case "Parameters"
WriteStringN(0, "==Arguments==")
Case "Image"
NomImage$=LTrim(RemoveString(Ligne$,"@Image"))
WriteStringN(0, "[[Image:PB_"+NomImage$+"]]")
Case "ExampleFile"
WriteStringN(0, "'''<big>Exemple</big>'''")
Case "Code"
CodeEnCours=1
WriteStringN(0, "<pre>")
Case "EndCode"
CodeEnCours=0
WriteStringN(0, "</pre>")
Case "FixedFont"
FixeFont=1
Case "EndFixedFont"
FixeFont=0
Case "LineBreak"
WriteStringN(0, "<br>")
Case "Link"
Position=FindString(Ligne$,"@Link",1)
While Position
Position1=FindString(Ligne$,Chr(34),Position)
Position2=FindString(Ligne$,Chr(34),Position1+1)
Position3=FindString(Ligne$,Chr(34),Position2+1)
Position4=FindString(Ligne$,Chr(34),Position3+1)
Deb$=Left(Ligne$,Position-1)
Suite$=Mid(Ligne$,Position3+1,Len(Ligne$)-Position3)
Champ$=StringField(Suite$,1,"(")
Champ1$="PureBasic:"+Champ$
Suite$=Mid(Ligne$,Position4+1,Len(Ligne$)-Position4)
Ligne$=Deb$+"[["+Champ1$+" | "+Champ$+"()]]"+Suite$
Position=FindString(Ligne$,"@Link",1)
Wend
WriteStringN(0,Ligne$)
Case "ReferenceLink"
Position=FindString(Ligne$,"@ReferenceLink",1)
;While Position
Position1=FindString(Ligne$,Chr(34),Position)
Position2=FindString(Ligne$,Chr(34),Position1+1)
Position3=FindString(Ligne$,Chr(34),Position2+1)
Position4=FindString(Ligne$,Chr(34),Position3+1)
Deb$=Left(Ligne$,Position-1)
Suite$=Mid(Ligne$,Position3+1,Len(Ligne$)-Position3)
Champ$=StringField(Suite$,1,"(")
Champ1$="PureBasic:"+Champ$
Suite$=Mid(Ligne$,Position4+1,Len(Ligne$)-Position4)
Ligne$=Deb$+"[["+Champ1$+" | "+Champ$+"()]]"+Suite$
Position=FindString(Ligne$,"@ReferenceLink",1)
;Wend
WriteStringN(0,Ligne$)
Case "OS Windows"
WriteStringN(0,"==OS Windows==")
Case "OS Amiga"
WriteStringN(0,"==OS Amiga==")
Case "OS Linux"
WriteStringN(0,"==OS Linux==")
Case "OS Mac"
WriteStringN(0,"==OS Mac==")
Case "SupportedOS"
WriteStringN(0,"==OS supportés==")
OS$=RemoveString(Ligne$, "@SupportedOS")
If FindString(OS$,"All",1)
WriteStringN(0,"Windows, AmigaOS, Linux, MacOS X")
Else
WriteStringN(0,LTrim(OS$))
EndIf
EndSelect
EndProcedure
Enfin pas l'arranger mais en faire un autre en partant de zéro .