tinux
Messages postés244Date d'inscriptionmercredi 13 avril 2005StatutMembreDernière intervention21 octobre 2013
-
7 août 2007 à 16:00
tinux
Messages postés244Date d'inscriptionmercredi 13 avril 2005StatutMembreDernière intervention21 octobre 2013
-
8 août 2007 à 13:28
Bonjour, afin de créer une coloration syntaxique pour un site pmwiki, j'ai besoin de votre aide pour un script javascript !
En effet, je voudrais que dans un textaera, l'utilisateur entre son code vb brut (par exemple) :
Private sub Hello()
For i=0 to 2 step 1
MsgBox("Hello")
Next i
End Sub
Et en cliquant sur un bouton, dans un deuxième textarea s'afficherait quelquechose comme :
%color=blue%Private%% %color=blue%Sub%% Hello() %color=green%'Un commentaire'%%
-> %color=blue%For%% i = 0 %color=blue%to%% 2 %color=blue%step%% 1
-->%color=blue%MsgBox%%(%color=darkred%"Hello"%%)
-> %color=blue%Next%% i
%color=blue%End%% %blue%Sub%%
-- Détails--
j'ai mis en rouge ce qui doit être ajouté pour que pmwiki puisse afficher ceci :
Private Sub Hello()
For i = 0 to 2 step 1
MsgBox("Hello")
Next i
End sub
Résumé des tags :
-%color=blue%% Mon Texte %%// Donne la couleur du texte entre chaque '%%'
- -> // Permet de créer une indentation
- --> // Permet de créer une indentation plus forte
tinux
Messages postés244Date d'inscriptionmercredi 13 avril 2005StatutMembreDernière intervention21 octobre 2013 7 août 2007 à 16:07
J'ai pensé à une fonction comme ceci pour la coloration :
function ColorCode (texte) {
var reg = /Private|Sub|For|To|Step|MsgBox|Next|End/;
texte = texte.replace(reg, "%blue%"®&"%%");
}
Mais je ne vois toujours pas comment traduire :
- un ' ' en '->'
- un ' ' en '-->'
- colorer en vert tout ce qui commence par un ' et finit par un '
- colorer en darkred tout ce qui commence par un " et finit par un "
De même, je ne sait pas comment appeler la fonction depuis un bouton, executer la fonction sur le premier textarea et afficher le resultat dans le second..
Bref, je ne m'y connait pas du tout en java et donc j'aurais grand besoin d'aide !
the_wwt
Messages postés177Date d'inscriptionjeudi 5 octobre 2006StatutMembreDernière intervention16 janvier 20091 7 août 2007 à 17:31
Bonjour,
J'ai testé ce bout de code, pour les trois reg exp (keysWord, comment, string) mais avec la librairie prototype dispobible ici ( c'est bien plus élégant).
Je bosse sur les indentaions et j'ai une question:
Y a t'il autant de tiret que d'espaces? - exemple:
' ' donne ->
' ' donne -->
' ' donne -->
Cordialement, Pierrick.
<---------------------------------------------------------------------------------------------------------->
<html>
<head>
<title></title>
<style type="">
#source{
width: 43%;
height: 100%;
float: left;
}
#myButton{
width: 8%;
height: 100%;
float: left;
margin-left: 30px;
margin-right: 30px;
}
#destination{
width: 43%;
height: 100%;
float: left;
}
</style>
<script src='prototype.js'></script>
<script language="javascript" type="text/javascript">
<!--
var reReservedKeys = /Private|Sub|For|To|Step|MsgBox|Next|End/;
var tplReservedKeys = "%blue%#{0}%%";
var reComment = /(.*)('.*')(.*)/;
var tplComment = "#{1}%green%#{2}%%#{3}";
var reString = /(.*)(".*")(.*)/;
var tplString = "#{1}%darkred%#{2}%%#{3}";
function haveFun(){
var s = document.getElementById("source").value;
s = s.gsub( reReservedKeys, tplReservedKeys);
s = s.gsub( reComment, tplComment);
s = s.gsub( reString, tplString);
document.getElementById("destination").value = s;
}
-->
</script>
the_wwt
Messages postés177Date d'inscriptionjeudi 5 octobre 2006StatutMembreDernière intervention16 janvier 20091 7 août 2007 à 17:45
Oups y a une erreur dans les templates des indentations...
Je te laisse la chercher... C'est le signe pour une fraction dont le dénominateur est 100.
Cordialement,
Pierrick.
the_wwt
Messages postés177Date d'inscriptionjeudi 5 octobre 2006StatutMembreDernière intervention16 janvier 20091 7 août 2007 à 19:33
Bonsoir,
Je pense que ce n'est pas une bonne solution de rajouter autant de gsub que de nombre d'indentation possible.
Il faut automatiser cela, j'y planche demain.
Cordialement,
Pierrick
tinux
Messages postés244Date d'inscriptionmercredi 13 avril 2005StatutMembreDernière intervention21 octobre 2013 7 août 2007 à 20:49
Merci, c'est vrai que c'est pas tip top la panoplie de gsub.. :p
Surtout que le top serait d'interdire tous les autres espaces..
Par exemple :
- Sources /// Résultat
- 1,2,3 espaces /// Il n'y a plus d'espaces dans le résultat
- 4 espaces /// Indentation, on supprime les espaces et on ajoute devant ->
- 5,6,7 espaces /// Il n'y a plus d'espaces dans le résultat
- 8 espaces /// Indentation, on supprime les espaces et on ajoyre devant -->
tinux
Messages postés244Date d'inscriptionmercredi 13 avril 2005StatutMembreDernière intervention21 octobre 2013 8 août 2007 à 13:28
Bravo, c'est nickel (pour les indents, j'avais déjà simplifié comme vous l'avez fait :p) Par contre pour la coloration, je ne maitrise pas assez bien ce genre d'expressions.
C'est un grand service que vous m'avez rendu là, Merci.