Skip to content

Instantly share code, notes, and snippets.

@CMarzin
Created December 9, 2016 11:30
Show Gist options
  • Save CMarzin/9a15a0923ae31639822d7ab0e7a49d22 to your computer and use it in GitHub Desktop.
Save CMarzin/9a15a0923ae31639822d7ab0e7a49d22 to your computer and use it in GitHub Desktop.
Detect sylabe french
<HTML>
<HEAD>
<script type="text/javascript">
function compterSylabeTexte()
{
var voyelle = "aàâeëéèêiïouùy";
var consonne = "bcçdfghjklmnpqrstvwxyz";
var ponctuation = ",;:!?.";
var texte = document.getElementById("zoneTexte").value;
var tailleInitiale=0;
//exception ch, ph, gn et th sont inséparables et bl, cl, fl, gl, pl, br, cr, dr, fr, gr, pr, tr, vr
var reg=new RegExp("([cpg]h|[bcfgp]l|[bcdfgptv]r)","g");
texte = texte.replace(reg,"X");
//le tiret sépare 2 mots
reg=new RegExp("-","g");
texte = texte.replace(reg,"|");
//la ponctuation est remplacer par des espaces
reg=new RegExp("["+ponctuation+"]","g");
texte = texte.replace(reg," ");
//on enlève les espaces en fin de ligne
reg=new RegExp("([ ]+\n)|([ ]+$)","g");
texte = texte.replace(reg,"\n");
//le e est muet en fin de vers cas ambigu ent non traité
reg=new RegExp("(e|es|ent)\n|e$|es$|ent$","g");
texte = texte.replace(reg,"'\n");
//Toute syllabe terminée par un E muet s’élide devant un mot commençant par une voyelle ou un H muet. ( je considère tout les H muet...)
reg=new RegExp("(e|es|ent)[ ]+(["+voyelle+"h])","g");
texte = texte.replace(reg,"' $2");
//Une consonne placée entre deux voyelles introduit une nouvelle syllabe
reg=new RegExp("(["+voyelle+"])(["+consonne+"X])(["+voyelle+"])", "g");
do{
tailleInitiale = texte.length;
texte = texte.replace(reg,"$1|$2$3");
}while(tailleInitiale < texte.length);
//De deux consonnes placées entre deux voyelles, la première appartient à la syllabe précédente, la seconde, à la syllabe suivante
reg=new RegExp("(["+voyelle+"])(["+consonne+"X])(["+consonne+"X])(["+voyelle+"])", "g");
do{
tailleInitiale = texte.length;
texte = texte.replace(reg,"$1$2|$3$4");
}while(tailleInitiale < texte.length);
//Quand il y a trois consonnes consécutives à l’intérieur d’un mot, ordinairement les deux premières terminent une syllabe, l’autre commence une nouvelle syllabe :
reg=new RegExp("(["+voyelle+"])(["+consonne+"X])(["+consonne+"X])(["+consonne+"X])(["+voyelle+"])", "g");
do{
tailleInitiale = texte.length;
texte = texte.replace(reg,"$1$2$3|$4$5");
}while(tailleInitiale < texte.length);
//les espace sont remplacé par |
reg=new RegExp("[ ]+","g");
texte = texte.replace(reg,"|");
var res = texte.split("\n");
var res2;
var resultatSomme="";
var i=0;
for(i=0;i < res.length; i++)
{
res2 = res[i].split("|");
if(res2.length > 1)
resultatSomme += res2.length + " " + res[i] + "\n";
else
resultatSomme += "\n";
}
document.getElementById("zoneDebug").value = resultatSomme;
}
</script>
</HEAD>
<BODY bgcolor="000000">
<CENTER><H1><font color="WHITE">--- POETOR -</FONT></H1><CENTER>
<CENTER>
<TEXTAREA id="zoneTexte" rows=40 cols=60 onkeyup="compterSylabeTexte()">
</TEXTAREA>
<TEXTAREA id="zoneDebug" rows=40 cols=60> </TEXTAREA>
</CENTER>
</BODY>
</HTML>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment