//==========================================================================================
// Création d'une page de flexions en français depuis le lien rouge dans la page principale
// -----------------------------------------------------------------------------------------
// ArséniureDeGallium 2012-11-07
// -----------------------------------------------------------------------------------------
//]
//==========================================================================================
if ( mw.config.get('wgNamespaceNumber') == 0 ){ CrFlFr_ChangerLiensRouges(); }
//--------------------------------------------------------------------------------------
// Créer les liens vers le gadget
// pour tous les liens rouges dans les infobox de classe "flextable-fr-mfsp"
//--------------------------------------------------------------------------------------
function CrFlFr_ChangerLiensRouges(){
var flxtbl = document.getElementsByClassName("flextable-fr-mfsp");
for (var t=0; t<flxtbl.length; t++){
var atbl=flxtbl.getElementsByClassName("new");
for (var k=0; k<atbl.length; k++){
var flex=atbl.innerHTML;
atbl.style.backgroundColor="#00ff00";
atbl.title="cliquez pour créer " + flex + " avec le gadget";
atbl.href="javascript:CrFlFr_CreerFlexion1('" + flex.replace(/ /g, ' ') + "')";
}
}
}
//==========================================================================================
var CrFlFr_Mot = "";
var CrFlFr_Flex = "";
//--------------------------------------------------------------------------------------
// Première étape suite à clic :
// * mémoriser les graphies des mots dans les variables globales
// * requête pour obtenir le wikicode de l'article
//--------------------------------------------------------------------------------------
function CrFlFr_CreerFlexion1(flx){
CrFlFr_Mot=wgPageName.replace(/_/g," ");
CrFlFr_Flex=flx;
// requête pour obtenir le contenu de l'article
var urlMot = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + encodeURIComponent(CrFlFr_Mot);
CommonWikt_ajax.http({
url: urlMot + '&action=raw&smaxage=0',
onSuccess:CrFlFr_CreerFlexion2
});
}
//--------------------------------------------------------------------------------------
// Deuxième étape suite à clic :
// * récupération du wikicode de l'article
// * calcul du wikicode pour la flexion
// * requête pour ouvrir la page de flexion en édition
//--------------------------------------------------------------------------------------
function CrFlFr_CreerFlexion2(Req,data){
// récupérer le wikicode
var codewiki=Req.responseText;
var codesplit = codewiki.split("\n"); // séparation en lignes individuelles
// Générer le code wiki de la nouvelle page en ne conservant que les lignes utiles
// de l'ancienne (la page principale du mot).
// Le principe est que l'on doit trouver dans l'ordre :
// * une section de langue française
// ** une section de type de mot
// *** éventuellement une boite de flexions
// *** une ligne de forme
// ** éventuellement une autre section de type de mot (retour récursif).
// * Une autre section de langue arrête tout.
var status = "wait fr";
var flex = false;
var new_codewiki="";
var mot_inv = false;
//on recherche si {{fr-inv}} est present, auquel cas on ne creera pas la section de nom commun
for (var k=0; k<codesplit.length; k++) {
mot_inv = /^{\{fr\-inv/.test(codesplit);
if(mot_inv)
break;
if(codesplit.indexOf("msing")>0) {
mot_inv = true;
break;
}
}
for (var k=0; k<codesplit.length; k++){
var sec_qqq = /^==*\{\{langue/.test(codesplit);
var sec_fr = /^==*\{\{langue\|fr\}\}*==/.test(codesplit);
var sec_flex = /^\{\{-flex-/.test(codesplit);
var sec_adj = /-adj-\|/.test(codesplit);
var sec_nom = /-nom-\|/.test(codesplit);
var flex_box = /^{\{fr\-/.test(codesplit);
var lig_frm = /^'''/.test(codesplit);
switch (status) {
case "wait fr" :
if (sec_fr) {
new_codewiki = codesplit + "\n";
status="wait sec mot";
}
break;
case "wait sec mot" :
if (sec_qqq) { status="fini"; }
if (sec_flex) { flex = true; }
if (sec_adj) {
if (flex)
new_codewiki += codesplit + "\n";
else
new_codewiki += codesplit.replace("{{-","{{-flex-") + "\n";
status = "wait frm adj";
}
if (sec_nom && !mot_inv) {
if (flex)
new_codewiki += codesplit + "\n";
else
new_codewiki += codesplit.replace("{{-","{{-flex-") + "\n";
status = "wait frm nom";
}
break;
case "wait frm adj" :
if (sec_qqq) { status="fini"; }
if (flex_box) {
new_codewiki += CrFlFr_Infobox(codesplit,CrFlFr_Mot) + "\n";
var infobox_lig = codesplit;
}
if (lig_frm) {
//on vérifie que le mot sur la ligne de forme est le même que le titre de la page
if(codesplit.indexOf(CrFlFr_Mot)==-1) {
alert("Le mot vedette sur la ligne de forme ne correspond pas au titre de la page.");
}
new_codewiki += codesplit.replace(CrFlFr_Mot,CrFlFr_Flex).replace("{{m}}","").replace("{{f}}","").replace("{{sp}}","") + "\n";
//*************************************************************//
//on cherche maintenant à traiter les différents cas possibles
//*fr-accord-al
//*fr-accord-ain
//*fr-accord-an
//*fr-accord-cons
//*fr-accord-el
//*fr-accord-en
//*fr-accord-er
//*fr-accord-et
//*fr-accord-eur
//*fr-accord-eux
//*fr-accord-f
//*fr-accord-in
//*fr-accord-on
//*fr-accord-ot
//*fr-accord-oux
//*fr-accord-rég
//*fr-accord-s
//*fr-accord-un
//*fr-rég
//Si aucun de ces cas n'est trouvé alors on utilise un cas général où on laisse l'utilisateur choisir les bons termes.
//*************************************************************//
if( /fr-accord-al\|/.test(new_codewiki) )
new_codewiki = Flex_al(new_codewiki,CrFlFr_Mot,"adj");
else if( /fr-accord-ain\|/.test(new_codewiki) )
new_codewiki = Flex_ain(new_codewiki,CrFlFr_Mot);
else if( /fr-accord-an\|/.test(new_codewiki) )
new_codewiki = Flex_an(new_codewiki,CrFlFr_Mot,"adj");
else if( /fr-accord-el\|/.test(new_codewiki) )
new_codewiki = Flex_el(new_codewiki,CrFlFr_Mot);
else if( /fr-accord-en\|/.test(new_codewiki) )
new_codewiki = Flex_en(new_codewiki,CrFlFr_Mot);
else if( /fr-accord-er\|/.test(new_codewiki) )
new_codewiki = Flex_er(new_codewiki,CrFlFr_Mot);
else if( /fr-accord-et\|/.test(new_codewiki) )
new_codewiki = Flex_et(new_codewiki,CrFlFr_Mot);
else if( /fr-accord-eur\|/.test(new_codewiki) )
new_codewiki = Flex_eur(new_codewiki,CrFlFr_Mot);
else if( /fr-accord-eux\|/.test(new_codewiki) )
new_codewiki = Flex_eux(new_codewiki,CrFlFr_Mot);
else if( /fr-accord-f\|/.test(new_codewiki) )
new_codewiki = Flex_f(new_codewiki,CrFlFr_Mot);
else if( /fr-accord-in\|/.test(new_codewiki) )
new_codewiki = Flex_in(new_codewiki,CrFlFr_Mot);
else if( /fr-accord-on\|/.test(new_codewiki) )
new_codewiki = Flex_on(new_codewiki,CrFlFr_Mot);
else if( /fr-accord-ot\|/.test(new_codewiki) )
new_codewiki = Flex_ot(new_codewiki,CrFlFr_Mot);
else if( /fr-accord-oux\|/.test(new_codewiki) )
new_codewiki = Flex_oux(new_codewiki,CrFlFr_Mot);
else if( /fr-accord-rég\|/.test(new_codewiki) )
new_codewiki = Flex_reg(new_codewiki,CrFlFr_Mot);
else if( /fr-accord-s\|/.test(new_codewiki) )
new_codewiki = Flex_s(new_codewiki,CrFlFr_Mot);
else if( /fr-accord-un\|/.test(new_codewiki) )
new_codewiki = Flex_un(new_codewiki,CrFlFr_Mot);
else if( /fr-accord-cons\|/.test(new_codewiki) ) {
//on récupère la consonne
var cons = infobox_lig.substring(infobox_lig.indexOf("|",infobox_lig.indexOf("|")+1)+1,infobox_lig.length-2);
if(cons.indexOf("ms=")>0)
cons = cons.substring(0,cons.indexOf("|"));
new_codewiki = Flex_cons(new_codewiki,CrFlFr_Mot,cons);
}
else if( /fr-rég\|/.test(new_codewiki) )
new_codewiki = Flex_reg2(new_codewiki,CrFlFr_Mot);
else
new_codewiki += Flex_standard(codesplit,CrFlFr_Mot);
if (flex) {
//on essaie de récupérer la forme principale
//depuis l'infobox en cherchant « |s= » ou « |ms= »
//si on ne l'a pas trouvé, alors on la « devine »
var frm_principale="";
var trouve = false;
var pos = infobox_lig.indexOf("|s=");
if( pos>0 ) {
frm_principale = infobox_lig.substring(pos+3,infobox_lig.indexOf("}}",pos));
trouve = true;
}
pos = infobox_lig.indexOf("|ms=");
if(pos>0 && trouve==false) {
frm_principale = infobox_lig.substring(pos+4,infobox_lig.indexOf("}}",pos));
trouve = true;
}
//si on n'a pas trouvé, alors il s'agit de l'un de ces modèles
//*fr-accord-al
//*fr-accord-er
//*fr-accord-eur
//*fr-accord-eux
//*fr-accord-f
//*fr-accord-ot
//*fr-accord-oux
if(trouve==false) {
var radical = infobox_lig.substring(infobox_lig.indexOf("|")+1,infobox_lig.indexOf("|",infobox_lig.indexOf("|")+1));
var suf = infobox_lig.substring(infobox_lig.indexOf("fr-accord-")+10,infobox_lig.indexOf("|"));
frm_principale = radical + suf;
trouve = true;
}
//on fait le remplacement sur la ligne de définition (2 remplacements)
var chaine_tmp = CrFlFr_Mot + "#fr|" + CrFlFr_Mot;
new_codewiki = new_codewiki.replace(chaine_tmp,frm_principale + "#fr|" + frm_principale);
flex = false;
}
status = "wait sec mot";
}
break;
case "wait frm nom" :
if (sec_qqq) { status="fini"; }
if (flex_box) {
new_codewiki += CrFlFr_Infobox(codesplit,CrFlFr_Mot) + "\n";
}
if (lig_frm) {
var pos = codesplit.indexOf("|équiv=");
// on cherche si le paramètre "équiv" est utilisé. S'il l'est alors on ne garde que
// le début de la ligne de forme et on rajoute "}}" pour ne garder que {{m}} ou {{f}}
if( pos>0 )
codesplit = codesplit.substring(0, pos) + codesplit.substring(codesplit.indexOf("}}",pos));
//remplacement par la flexion
var lfm = codesplit.replace(CrFlFr_Mot,CrFlFr_Flex);
//détection du modèle m/f/mf/fm, avec paramètres éventuels ignorés (ils seront supprimés)
var chc = lfm.match( /\{\{(m|f|mf|fm)\s*(\|*)?\}\}/ );
//si trouvé, garde le modèle de genre mais sans les paramètres
if (chc)
new_codewiki += lfm + "\n";
//si pas de modèle de genre, ajoute le modèle "c'est pas bien"
else {
if( lfm.indexOf("{{genre")>=0 ) {
new_codewiki += lfm + "\n";
}
else {
new_codewiki += lfm + " {{genre|fr}}\n";
}
}
//on essaie maintenant de remplir automatiquement les définitions à partir de l'infobox
if( /fr-accord-al\|/.test(new_codewiki) )
new_codewiki = Flex_al(new_codewiki,CrFlFr_Mot,"nom");
else if( /fr-accord-an\|/.test(new_codewiki) )
new_codewiki = Flex_an(new_codewiki,CrFlFr_Mot,"nom");
else if( /fr-rég\|/.test(new_codewiki) || /fr-rég-x\|/.test(new_codewiki) )
new_codewiki = Flex_reg2(new_codewiki,CrFlFr_Mot);
else
new_codewiki += Flex_standard(codesplit,CrFlFr_Mot);
status = "wait sec mot";
}
break;
}
if (status=="fini") { break; } //on ne traite que le français
}
//Par sécurité, inutile si les classes sont correctement déclarées dans les modèles
//et que la page est correctement fichue.
if (status=="wait fr") { alert("Pas de section « français »."); }
//générer clé de tri
var cle = CommonWikt_CleTri(CrFlFr_Flex);
if (cle != CrFlFr_Flex.toLowerCase()){ new_codewiki += "{{clé de tri|" + cle + "}}\n"; }
//ouvrir la nouvelle page en édition
var urlFlx = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=" + encodeURIComponent(CrFlFr_Flex);
CommonWikt_ajax.http({
url: urlFlx + "&action=edit",
text: new_codewiki,
onSuccess:CrFlFr_CreerFlexion3
});
}
//--------------------------------------------------------------------------------------
// Troisième étape suite à clic :
// * charger le code wiki dans la zone d'édition
// * rendre la main à l'utilisateur
//--------------------------------------------------------------------------------------
function CrFlFr_CreerFlexion3(Req,data){
var TexteFinal = data.text;
while(document.body.firstChild){ document.body.removeChild(document.body.firstChild); }
document.body.innerHTML = Req.responseText;
document.getElementById('wpTextbox1').value = TexteFinal;
document.getElementById('wpSummary').value = "Création avec ]";
}
//==========================================================================================
//--------------------------------------------------------------------------------------
// Vérifie qu'une des formes mp, fs ou fp a été trouvée. Si ce n'est pas le cas,
// on affiche une boite de dialogue pour signaler que le modèle de flexion n'est
// probablement pas le bon.
//--------------------------------------------------------------------------------------
function verifFlexBox(mp, fs, fp){
if(mp==-1 && fs==-1 && fp==-1)
alert("Le modèle de flexion ne semble pas correct. Vérifiez le et modifiez le si besoin avant de créer les flexions.");
// il faudrait mettre ici qqchose qui stoppe l'exécution du gadget pour qu'on reste sur la page principale plutôt que d'arriver sur une page de flexion mal remplie.
}
//--------------------------------------------------------------------------------------
// Ajouter le paramètre s= ou ms= à l'infobox
//--------------------------------------------------------------------------------------
function CrFlFr_Infobox(lig,mot){
var p = lig.lastIndexOf("}}");
if (p==-1) {
alert("Les infobox avec le code sur plusieurs lignes ne sont pas gérées.");
return lig;
}
if ( (/fr-rég\|/.test(lig) ||
/fr-rég-x\|/.test(lig) ||
/fr-accord-mf\|/.test(lig)) &&
lig.indexOf("|s=")==-1) {
return lig.substring(0,p) + "|s=" + mot + "}}";
}
if ( (/fr-accord-rég\|/.test(lig) ||
/fr-accord-mixte\|/.test(lig) ||
/fr-accord-s\|/.test(lig) ||
/fr-accord-cons\|/.test(lig) ||
/fr-accord-el\|/.test(lig) ||
/fr-accord-ain\|/.test(lig) ||
/fr-accord-an\|/.test(lig) ||
/fr-accord-en\|/.test(lig) ||
/fr-accord-et\|/.test(lig) ||
/fr-accord-on\|/.test(lig) ||
/fr-accord-in\|/.test(lig) ||
/fr-accord-un\|/.test(lig) ) &&
(lig.indexOf("|ms=")<0) ){
return lig.substring(0,p) + "|ms=" + mot + "}}";
}
if ( /fr-accord-mixte\|/.test(lig) ){
return lig.substring(0,p) + "|ms=" + mot + "|fs=" + mot + "e}}";
}
return lig; // pour les modèles non gérés
}
//--------------------------------------------------------------------------------------
// Définition dans le cas régulier
//--------------------------------------------------------------------------------------
function Flex_standard(codesplit,CrFlFr_Mot){
var tmp_codewiki="";
if ( (codesplit.indexOf("{{mf}}")>=0) )
tmp_codewiki += "# ''Pluriel de ''[[";
else
tmp_codewiki += "# ''Masculin/Féminin singulier/pluriel de ''[[";
tmp_codewiki += CrFlFr_Mot + "#fr|" + CrFlFr_Mot + "]]''.''\n\n";
return tmp_codewiki;
}
//--------------------------------------------------------------------------------------
// Définition dans le cas des mots qui utilisent fr-accord-al
//--------------------------------------------------------------------------------------
function Flex_al(new_codewiki,CrFlFr_Mot,nature){
var tmp_codewiki=new_codewiki;
// on cherche d'abord à quelle forme on doit s'occuper
var pos_mp = tmp_codewiki.indexOf("aux'''");
var pos_fs = tmp_codewiki.indexOf("ale'''");
var pos_fp = tmp_codewiki.indexOf("ales'''");
verifFlexBox(pos_mp, pos_fs, pos_fp);
if( pos_mp>0 )
tmp_codewiki = tmp_codewiki.replace(/al\|fr\}\}/mg,"o|fr}}");
if( pos_fs>0 || pos_fp>0 )
tmp_codewiki = tmp_codewiki.replace(/o\|fr\}\}/mg,"al|fr}}");
if(nature == "adj") {
if (pos_mp>0)
tmp_codewiki += "# ''Masculin pluriel de ''[[";
if (pos_fs>0)
tmp_codewiki += "# ''Féminin singulier de ''[[";
if (pos_fp>0)
tmp_codewiki += "# ''Féminin pluriel de ''[[";
tmp_codewiki += CrFlFr_Mot + "#fr|" + CrFlFr_Mot + "]]''.''\n\n";
}
if(nature == "nom") {
//on cherche si le gadget a été appelé depuis le masculin ou le féminin
var fem = /ale/.test(CrFlFr_Mot.substring(CrFlFr_Mot.length-3,CrFlFr_Mot.length) )
var MotMasc = CrFlFr_Mot;
var MotFem = CrFlFr_Mot + "e";
if (fem) {
MotFem = CrFlFr_Mot;
MotMasc = MotFem.substring(0,MotFem.length-1);
}
//si le gadget a été appelé depuis l'article masculin et qu'on veut créer la flexion féminine
if( fem==false && (pos_fs>0 || pos_fp>0) )
tmp_codewiki = tmp_codewiki.replace(/\{\{m\}\}/mg,"{{f}}");
//si le gadget a été appelé depuis l'article féminin et qu'on veut créer la flexion masculine
if( fem>0 && pos_mp>0 )
tmp_codewiki = tmp_codewiki.replace(/\{\{f\}\}/mg,"{{m}}");
if (pos_mp>0)
tmp_codewiki += "# ''Pluriel de '']''.''\n\n";
if (pos_fs>0) {
alert("Vous devez créer vous même la définition. Le gadget ne peut pas la deviner.\nLa forme « féminine » des noms est considéré comme un nom à part entière, et non comme une flexion.");
tmp_codewiki = "# {{ébauche-déf|fr}}";
}
if (pos_fp>0)
tmp_codewiki += "# ''Pluriel de '']''.''\n\n";
}
return tmp_codewiki;
}
//--------------------------------------------------------------------------------------
// Définition dans le cas des mots qui utilisent fr-accord-ain
//--------------------------------------------------------------------------------------
function Flex_ain(new_codewiki,CrFlFr_Mot){
var tmp_codewiki=new_codewiki;
// on cherche d'abord à quelle forme on doit s'occuper
var pos_mp = tmp_codewiki.indexOf("ains'''");
var pos_fs = tmp_codewiki.indexOf("aine'''");
var pos_fp = tmp_codewiki.indexOf("aines'''");
verifFlexBox(pos_mp, pos_fs, pos_fp);
if( pos_mp>0 )
tmp_codewiki = tmp_codewiki.replace(/ɛn\|fr\}\}/mg,"ɛ̃|fr}}");
if( pos_fs>0 || pos_fp>0 )
tmp_codewiki = tmp_codewiki.replace(/ɛ̃\|fr\}\}/mg,"ɛn|fr}}");
if (pos_mp>0)
tmp_codewiki += "# ''Masculin pluriel de ''[[";
if (pos_fs>0)
tmp_codewiki += "# ''Féminin singulier de ''[[";
if (pos_fp>0)
tmp_codewiki += "# ''Féminin pluriel de ''[[";
tmp_codewiki += CrFlFr_Mot + "#fr|" + CrFlFr_Mot + "]]''.''\n\n";
return tmp_codewiki;
}
//--------------------------------------------------------------------------------------
// Définition dans le cas des mots qui utilisent fr-accord-an
//--------------------------------------------------------------------------------------
function Flex_an(new_codewiki,CrFlFr_Mot,nature){
var tmp_codewiki=new_codewiki;
// on cherche d'abord à quelle forme on doit s'occuper
var pos_mp = tmp_codewiki.indexOf("ans'''");
var pos_fs = tmp_codewiki.indexOf("ane'''");
var pos_fp = tmp_codewiki.indexOf("anes'''");
verifFlexBox(pos_mp, pos_fs, pos_fp);
if( pos_mp>0 )
tmp_codewiki = tmp_codewiki.replace(/an\|fr\}\}/mg,"ɑ̃|fr}}");
if( pos_fs>0 || pos_fp>0 )
tmp_codewiki = tmp_codewiki.replace(/ɑ̃\|fr\}\}/mg,"an|fr}}");
if(nature == "adj") {
if (pos_mp>0)
tmp_codewiki += "# ''Masculin pluriel de ''[[";
if (pos_fs>0)
tmp_codewiki += "# ''Féminin singulier de ''[[";
if (pos_fp>0)
tmp_codewiki += "# ''Féminin pluriel de ''[[";
tmp_codewiki += CrFlFr_Mot + "#fr|" + CrFlFr_Mot + "]]''.''\n\n";
}
if(nature == "nom") {
//on cherche si le gadget a été appelé depuis le masculin ou le féminin
var fem = /ane/.test(CrFlFr_Mot.substring(CrFlFr_Mot.length-3,CrFlFr_Mot.length) )
var MotMasc = CrFlFr_Mot;
var MotFem = CrFlFr_Mot + "e";
if (fem) {
MotFem = CrFlFr_Mot;
MotMasc = MotFem.substring(0,MotFem.length-1);
}
//si le gadget a été appelé depuis l'article masculin et qu'on veut créer la flexion féminine
if( fem==false && (pos_fs>0 || pos_fp>0) )
tmp_codewiki = tmp_codewiki.replace(/\{\{m\}\}/mg,"{{f}}");
//si le gadget a été appelé depuis l'article féminin et qu'on veut créer la flexion masculine
if( fem>0 && pos_mp>0 )
tmp_codewiki = tmp_codewiki.replace(/\{\{f\}\}/mg,"{{m}}");
if (pos_mp>0)
tmp_codewiki += "# ''Pluriel de '']''.''\n\n";
if (pos_fs>0) {
alert("Vous devez créer vous même la définition. Le gadget ne peut pas la deviner.\nLa forme « féminine » des noms est considéré comme un nom à part entière, et non comme une flexion.");
tmp_codewiki = "# {{ébauche-déf|fr}}";
}
if (pos_fp>0)
tmp_codewiki += "# ''Pluriel de '']''.''\n\n";
}
return tmp_codewiki;
}
//--------------------------------------------------------------------------------------
// Définition dans le cas des mots qui utilisent fr-accord-cons
//--------------------------------------------------------------------------------------
function Flex_cons(new_codewiki,CrFlFr_Mot,cons,nature){
var tmp_codewiki=new_codewiki;
// on cherche d'abord à quelle forme on doit s'occuper
var pos_mp = tmp_codewiki.indexOf("s'''");
var pos_fs = tmp_codewiki.indexOf("e'''");
var pos_fp = tmp_codewiki.indexOf("es'''");
verifFlexBox(pos_mp, pos_fs, pos_fp);
if( pos_mp>0 && pos_fp==-1) {
var tmp = cons + "|fr}}";
var tmp_pos = tmp_codewiki.indexOf(tmp,tmp_codewiki.indexOf("{{pron|")););
if(tmp_pos>0)
tmp_codewiki= tmp_codewiki.substr(0, tmp_pos) + tmp_codewiki.substr(tmp_pos+cons.length);
}
if( pos_fs>0 || pos_fp>0 ) {
var tmp_pos = tmp_codewiki.lastIndexOf("|fr}}");
if ( tmp_codewiki.indexOf("{{pron|") != -1 ) {
//on ajoute la (les) lettre(s) supplémentaire(s) dans la prononciation
tmp_codewiki= tmp_codewiki.substr(0, tmp_pos) + cons + tmp_codewiki.substr(tmp_pos);
}
}
if (pos_mp>0 && pos_fp==-1)
tmp_codewiki += "# ''Masculin pluriel de ''[[";
if (pos_fs>0)
tmp_codewiki += "# ''Féminin singulier de ''[[";
if (pos_fp>0)
tmp_codewiki += "# ''Féminin pluriel de ''[[";
tmp_codewiki += CrFlFr_Mot + "#fr|" + CrFlFr_Mot + "]]''.''\n\n";
return tmp_codewiki;
if(nature == "adj") {
if (pos_mp>0 && pos_fp==-1)
tmp_codewiki += "# ''Masculin pluriel de ''[[";
if (pos_fs>0)
tmp_codewiki += "# ''Féminin singulier de ''[[";
if (pos_fp>0)
tmp_codewiki += "# ''Féminin pluriel de ''[[";
tmp_codewiki += CrFlFr_Mot + "#fr|" + CrFlFr_Mot + "]]''.''\n\n";
}
if(nature == "nom") {
//on cherche si le gadget a été appelé depuis le masculin ou le féminin
var fem = /e/.test(CrFlFr_Mot.substring(CrFlFr_Mot.length-1,CrFlFr_Mot.length) )
var MotMasc = CrFlFr_Mot;
var MotFem = CrFlFr_Mot + "e";
if (fem) {
MotFem = CrFlFr_Mot;
MotMasc = MotFem.substring(0,MotFem.length-1);
}
//si le gadget a été appelé depuis l'article masculin et qu'on veut créer la flexion féminine
if( fem==false && (pos_fs>0 || pos_fp>0) )
tmp_codewiki = tmp_codewiki.replace(/\{\{m\}\}/mg,"{{f}}");
//si le gadget a été appelé depuis l'article féminin et qu'on veut créer la flexion masculine
if( fem>0 && pos_mp>0 )
tmp_codewiki = tmp_codewiki.replace(/\{\{f\}\}/mg,"{{m}}");
if (pos_mp>0 && pos_fp==-1)
tmp_codewiki += "# ''Pluriel de '']''.''\n\n";
if (pos_fs>0) {
alert("Vous devez créer vous même la définition. Le gadget ne peut pas la deviner.\nLa forme « féminine » des noms est considéré comme un nom à part entière, et non comme une flexion.");
tmp_codewiki += "# {{ébauche-déf|fr}}";
}
if (pos_fp>0)
tmp_codewiki += "# ''Pluriel de '']''.''\n\n";
}
return tmp_codewiki;
}
//--------------------------------------------------------------------------------------
// Définition dans le cas des mots qui utilisent fr-accord-el
//--------------------------------------------------------------------------------------
function Flex_el(new_codewiki,CrFlFr_Mot){
var tmp_codewiki=new_codewiki;
// on cherche d'abord à quelle forme on doit s'occuper
var pos_mp = tmp_codewiki.indexOf("els'''");
var pos_fs = tmp_codewiki.indexOf("elle'''");
var pos_fp = tmp_codewiki.indexOf("elles'''");
verifFlexBox(pos_mp, pos_fs, pos_fp);
if (pos_mp>0)
tmp_codewiki += "# ''Masculin pluriel de ''[[";
if (pos_fs>0)
tmp_codewiki += "# ''Féminin singulier de ''[[";
if (pos_fp>0)
tmp_codewiki += "# ''Féminin pluriel de ''[[";
tmp_codewiki += CrFlFr_Mot + "#fr|" + CrFlFr_Mot + "]]''.''\n\n";
return tmp_codewiki;
}
//--------------------------------------------------------------------------------------
// Définition dans le cas des mots qui utilisent fr-accord-en
//--------------------------------------------------------------------------------------
function Flex_en(new_codewiki,CrFlFr_Mot){
var tmp_codewiki=new_codewiki;
// on cherche d'abord à quelle forme on doit s'occuper
var pos_mp = tmp_codewiki.indexOf("ens'''");
var pos_fs = tmp_codewiki.indexOf("enne'''");
var pos_fp = tmp_codewiki.indexOf("ennes'''");
verifFlexBox(pos_mp, pos_fs, pos_fp);
if( pos_mp>0 )
tmp_codewiki = tmp_codewiki.replace(/ɛn\|fr\}\}/mg,"ɛ̃|fr}}");
if( pos_fs>0 || pos_fp>0 )
tmp_codewiki = tmp_codewiki.replace(/ɛ̃\|fr\}\}/mg,"ɛn|fr}}");
if (pos_mp>0)
tmp_codewiki += "# ''Masculin pluriel de ''[[";
if (pos_fs>0)
tmp_codewiki += "# ''Féminin singulier de ''[[";
if (pos_fp>0)
tmp_codewiki += "# ''Féminin pluriel de ''[[";
tmp_codewiki += CrFlFr_Mot + "#fr|" + CrFlFr_Mot + "]]''.''\n\n";
return tmp_codewiki;
}
//--------------------------------------------------------------------------------------
// Définition dans le cas des mots qui utilisent fr-accord-er
//--------------------------------------------------------------------------------------
function Flex_er(new_codewiki,CrFlFr_Mot){
var tmp_codewiki=new_codewiki;
// on cherche d'abord à quelle forme on doit s'occuper
var pos_mp = tmp_codewiki.indexOf("ers'''");
var pos_fs = tmp_codewiki.indexOf("ère'''");
var pos_fp = tmp_codewiki.indexOf("ères'''");
verifFlexBox(pos_mp, pos_fs, pos_fp);
if( pos_mp>0 )
tmp_codewiki = tmp_codewiki.replace(/ɛʁ\|fr\}\}/mg,"e|fr}}");
if( pos_fs>0 || pos_fp>0 ) {
tmp_codewiki = tmp_codewiki.replace(/e\|fr\}\}/mg,"ɛʁ|fr}}");
tmp_codewiki = tmp_codewiki.replace("languɛʁ","langue");
}
if (pos_mp>0)
tmp_codewiki += "# ''Masculin pluriel de ''[[";
if (pos_fs>0)
tmp_codewiki += "# ''Féminin singulier de ''[[";
if (pos_fp>0)
tmp_codewiki += "# ''Féminin pluriel de ''[[";
tmp_codewiki += CrFlFr_Mot + "#fr|" + CrFlFr_Mot + "]]''.''\n\n";
return tmp_codewiki;
}
//--------------------------------------------------------------------------------------
// Définition dans le cas des mots qui utilisent fr-accord-et
//--------------------------------------------------------------------------------------
function Flex_et(new_codewiki,CrFlFr_Mot){
var tmp_codewiki=new_codewiki;
// on cherche d'abord à quelle forme on doit s'occuper
var pos_mp = tmp_codewiki.indexOf("ets'''");
var pos_fs = tmp_codewiki.indexOf("ette'''");
var pos_fp = tmp_codewiki.indexOf("ettes'''");
//si pos_fs et pos_fp n'ont pas été trouvés, c'est peut-être parce que le féminin se termine en « -ète ».
if(pos_fs==-1)
pos_fs = tmp_codewiki.indexOf("ète'''");
if(pos_fp==-1)
pos_fp = tmp_codewiki.indexOf("ètes'''");
verifFlexBox(pos_mp, pos_fs, pos_fp);
if( pos_mp>0 )
tmp_codewiki = tmp_codewiki.replace(/ɛt\|fr\}\}/mg,"ɛ|fr}}");
if( pos_fs>0 || pos_fp>0 )
tmp_codewiki = tmp_codewiki.replace(/ɛ\|fr\}\}/mg,"ɛt|fr}}");
if (pos_mp>0)
tmp_codewiki += "# ''Masculin pluriel de ''[[";
if (pos_fs>0)
tmp_codewiki += "# ''Féminin singulier de ''[[";
if (pos_fp>0)
tmp_codewiki += "# ''Féminin pluriel de ''[[";
tmp_codewiki += CrFlFr_Mot + "#fr|" + CrFlFr_Mot + "]]''.''\n\n";
return tmp_codewiki;
}
//--------------------------------------------------------------------------------------
// Définition dans le cas des mots qui utilisent fr-accord-eur
//--------------------------------------------------------------------------------------
function Flex_eur(new_codewiki,CrFlFr_Mot){
var tmp_codewiki=new_codewiki;
// on cherche d'abord à quelle forme on doit s'occuper
var pos_mp = tmp_codewiki.indexOf("eurs'''");
var pos_fs1 = tmp_codewiki.indexOf("euse'''");
var pos_fp1 = tmp_codewiki.indexOf("euses'''");
var pos_fs2 = tmp_codewiki.indexOf("rice'''");
var pos_fp2 = tmp_codewiki.indexOf("rices'''");
//la fonction verifFlexBox manque d'argument pour gérer ce cas.
if( pos_mp>0 ) {
tmp_codewiki = tmp_codewiki.replace(/øz\|fr\}\}/mg,"œʁ|fr}}");
tmp_codewiki = tmp_codewiki.replace(/ʁis\|fr\}\}/mg,"œʁ|fr}}");
}
if( pos_fs1>0 || pos_fp1>0 )
tmp_codewiki = tmp_codewiki.replace(/œʁ\|fr\}\}/mg,"øz|fr}}");
if( pos_fs2>0 || pos_fp2>0 )
tmp_codewiki = tmp_codewiki.replace(/œʁ\|fr\}\}/mg,"ʁis|fr}}");
if (pos_mp>0)
tmp_codewiki += "# ''Masculin pluriel de ''[[";
if (pos_fs1>0 || pos_fs2>0)
tmp_codewiki += "# ''Féminin singulier de ''[[";
if (pos_fp1>0 || pos_fp2>0)
tmp_codewiki += "# ''Féminin pluriel de ''[[";
tmp_codewiki += CrFlFr_Mot + "#fr|" + CrFlFr_Mot + "]]''.''\n\n";
return tmp_codewiki;
}
//--------------------------------------------------------------------------------------
// Définition dans le cas des mots qui utilisent fr-accord-eux
//--------------------------------------------------------------------------------------
function Flex_eux(new_codewiki,CrFlFr_Mot){
var tmp_codewiki=new_codewiki;
// on cherche d'abord à quelle forme on doit s'occuper
var pos_fs = tmp_codewiki.indexOf("euse'''");
var pos_fp = tmp_codewiki.indexOf("euses'''");
verifFlexBox(pos_fs, pos_fs, pos_fp); //on met 2 fois pos_fs car la fonction prend 3 arguments en entrée
if( pos_fs>0 || pos_fp>0 )
tmp_codewiki = tmp_codewiki.replace(/ø\|fr\}\}/mg,"øz|fr}}");
if (pos_fs>0)
tmp_codewiki += "# ''Féminin singulier de ''[[";
if (pos_fp>0)
tmp_codewiki += "# ''Féminin pluriel de ''[[";
tmp_codewiki += CrFlFr_Mot + "#fr|" + CrFlFr_Mot + "]]''.''\n\n";
return tmp_codewiki;
}
//--------------------------------------------------------------------------------------
// Définition dans le cas des mots qui utilisent fr-accord-f
//--------------------------------------------------------------------------------------
function Flex_f(new_codewiki,CrFlFr_Mot){
var tmp_codewiki=new_codewiki;
// on cherche d'abord à quelle forme on doit s'occuper
var pos_mp = tmp_codewiki.indexOf("fs'''");
var pos_fs = tmp_codewiki.indexOf("ve'''");
var pos_fp = tmp_codewiki.indexOf("ves'''");
verifFlexBox(pos_mp, pos_fs, pos_fp);
if( pos_mp>0 )
tmp_codewiki = tmp_codewiki.replace(/v\|fr\}\}/mg,"f|fr}}");
if( pos_fs>0 || pos_fp>0 )
tmp_codewiki = tmp_codewiki.replace(/f\|fr\}\}/mg,"v|fr}}");
if (pos_mp>0)
tmp_codewiki += "# ''Masculin pluriel de ''[[";
if (pos_fs>0)
tmp_codewiki += "# ''Féminin singulier de ''[[";
if (pos_fp>0)
tmp_codewiki += "# ''Féminin pluriel de ''[[";
tmp_codewiki += CrFlFr_Mot + "#fr|" + CrFlFr_Mot + "]]''.''\n\n";
return tmp_codewiki;
}
//--------------------------------------------------------------------------------------
// Définition dans le cas des mots qui utilisent fr-accord-in
//--------------------------------------------------------------------------------------
function Flex_in(new_codewiki,CrFlFr_Mot){
var tmp_codewiki=new_codewiki;
// on cherche d'abord à quelle forme on doit s'occuper
var pos_mp = tmp_codewiki.indexOf("ins'''");
var pos_fs = tmp_codewiki.indexOf("ine'''");
var pos_fp = tmp_codewiki.indexOf("ines'''");
verifFlexBox(pos_mp, pos_fs, pos_fp);
if( pos_mp>0 )
tmp_codewiki = tmp_codewiki.replace(/in\|fr\}\}/mg,"ɛ̃|fr}}");
if( pos_fs>0 || pos_fp>0 )
tmp_codewiki = tmp_codewiki.replace(/ɛ̃\|fr\}\}/mg,"in|fr}}");
if (pos_mp>0)
tmp_codewiki += "# ''Masculin pluriel de ''[[";
if (pos_fs>0)
tmp_codewiki += "# ''Féminin singulier de ''[[";
if (pos_fp>0)
tmp_codewiki += "# ''Féminin pluriel de ''[[";
tmp_codewiki += CrFlFr_Mot + "#fr|" + CrFlFr_Mot + "]]''.''\n\n";
return tmp_codewiki;
}
//--------------------------------------------------------------------------------------
// Définition dans le cas des mots qui utilisent fr-accord-on
//--------------------------------------------------------------------------------------
function Flex_on(new_codewiki,CrFlFr_Mot){
var tmp_codewiki=new_codewiki;
// on cherche d'abord à quelle forme on doit s'occuper
var pos_mp = tmp_codewiki.indexOf("ons'''");
var pos_fs = tmp_codewiki.indexOf("onne'''");
var pos_fp = tmp_codewiki.indexOf("onnes'''");
//si pos_fs et pos_fp n'ont pas été trouvés, c'est peut-être parce que le féminin se termine en « -one ».
if(pos_fs==-1)
pos_fs = tmp_codewiki.indexOf("one'''");
if(pos_fp==-1)
pos_fp = tmp_codewiki.indexOf("ones'''");
verifFlexBox(pos_mp, pos_fs, pos_fp);
if( pos_mp>0 )
tmp_codewiki = tmp_codewiki.replace(/ɔn\|fr\}\}/mg,"ɔ̃|fr}}");
if( pos_fs>0 || pos_fp>0 )
tmp_codewiki = tmp_codewiki.replace(/ɔ̃\|fr\}\}/mg,"ɔn|fr}}");
if (pos_mp>0)
tmp_codewiki += "# ''Masculin pluriel de ''[[";
if (pos_fs>0)
tmp_codewiki += "# ''Féminin singulier de ''[[";
if (pos_fp>0)
tmp_codewiki += "# ''Féminin pluriel de ''[[";
tmp_codewiki += CrFlFr_Mot + "#fr|" + CrFlFr_Mot + "]]''.''\n\n";
return tmp_codewiki;
}
//--------------------------------------------------------------------------------------
// Définition dans le cas des mots qui utilisent fr-accord-ot
//--------------------------------------------------------------------------------------
function Flex_ot(new_codewiki,CrFlFr_Mot){
var tmp_codewiki=new_codewiki;
// on cherche d'abord à quelle forme on doit s'occuper
var pos_mp = tmp_codewiki.indexOf("ots'''");
var pos_fs = tmp_codewiki.indexOf("ote'''");
var pos_fp = tmp_codewiki.indexOf("otes'''");
verifFlexBox(pos_mp, pos_fs, pos_fp);
if( pos_mp>0 )
tmp_codewiki = tmp_codewiki.replace(/ɔt\|fr\}\}/mg,"o|fr}}");
if( pos_fs>0 || pos_fp>0 )
tmp_codewiki = tmp_codewiki.replace(/o\|fr\}\}/mg,"ɔt|fr}}");
if (pos_mp>0)
tmp_codewiki += "# ''Masculin pluriel de ''[[";
if (pos_fs>0)
tmp_codewiki += "# ''Féminin singulier de ''[[";
if (pos_fp>0)
tmp_codewiki += "# ''Féminin pluriel de ''[[";
tmp_codewiki += CrFlFr_Mot + "#fr|" + CrFlFr_Mot + "]]''.''\n\n";
return tmp_codewiki;
}
//--------------------------------------------------------------------------------------
// Définition dans le cas des mots qui utilisent fr-accord-oux
//--------------------------------------------------------------------------------------
function Flex_oux(new_codewiki,CrFlFr_Mot){
var tmp_codewiki=new_codewiki;
// on cherche d'abord à quelle forme on doit s'occuper
var pos_fs = tmp_codewiki.indexOf("ouce'''");
var pos_fp = tmp_codewiki.indexOf("ouces'''");
verifFlexBox(pos_fs, pos_fs, pos_fp); //on met 2 fois pos_fs car la fonction prend 3 arguments en entrée
if( pos_fs>0 || pos_fp>0 )
tmp_codewiki = tmp_codewiki.replace(/u\|fr\}\}/mg,"us|fr}}");
if (pos_fs>0)
tmp_codewiki += "# ''Féminin singulier de ''[[";
if (pos_fp>0)
tmp_codewiki += "# ''Féminin pluriel de ''[[";
tmp_codewiki += CrFlFr_Mot + "#fr|" + CrFlFr_Mot + "]]''.''\n\n";
return tmp_codewiki;
}
//--------------------------------------------------------------------------------------
// Définition dans le cas des mots qui utilisent fr-accord-reg
//--------------------------------------------------------------------------------------
function Flex_reg(new_codewiki,CrFlFr_Mot){
var tmp_codewiki=new_codewiki;
// on cherche d'abord à quelle forme on doit s'occuper
var pos_mp = tmp_codewiki.indexOf("s'''");
var pos_fs = tmp_codewiki.indexOf("e'''");
var pos_fp = tmp_codewiki.indexOf("es'''");
verifFlexBox(pos_mp, pos_fs, pos_fp);
if (pos_mp>0 && pos_fp==-1)
tmp_codewiki += "# ''Masculin pluriel de ''[[";
if (pos_fs>0)
tmp_codewiki += "# ''Féminin singulier de ''[[";
if (pos_fp>0)
tmp_codewiki += "# ''Féminin pluriel de ''[[";
tmp_codewiki += CrFlFr_Mot + "#fr|" + CrFlFr_Mot + "]]''.''\n\n";
return tmp_codewiki;
}
//--------------------------------------------------------------------------------------
// Définition dans le cas des mots qui utilisent fr-rég
//--------------------------------------------------------------------------------------
function Flex_reg2(new_codewiki,CrFlFr_Mot){
var tmp_codewiki=new_codewiki;
tmp_codewiki += "# ''Pluriel de '']''.''\n\n";
return tmp_codewiki;
}
//--------------------------------------------------------------------------------------
// Définition dans le cas des mots qui utilisent fr-accord-s
//--------------------------------------------------------------------------------------
function Flex_s(new_codewiki,CrFlFr_Mot){
var tmp_codewiki=new_codewiki;
// on cherche d'abord à quelle forme on doit s'occuper
var pos_fs = tmp_codewiki.indexOf("se'''");
var pos_fp = tmp_codewiki.indexOf("ses'''");
if( pos_fs>0 || pos_fp>0 ) {
var tmp_pos = tmp_codewiki.indexOf("z|fr}}",tmp_codewiki.indexOf("{{pron|"));
if(tmp_pos==-1) {
var tmp_pos = tmp_codewiki.lastIndexOf("|fr}}");
if ( tmp_codewiki.indexOf("{{pron|") != -1 ) {
//on ajoute la (les) lettre(s) supplémentaire(s) dans la prononciation
tmp_codewiki= tmp_codewiki.substr(0, tmp_pos) + "z" + tmp_codewiki.substr(tmp_pos);
}
}
}
if (pos_fs>0)
tmp_codewiki += "# ''Féminin singulier de ''[[";
if (pos_fp>0)
tmp_codewiki += "# ''Féminin pluriel de ''[[";
tmp_codewiki += CrFlFr_Mot + "#fr|" + CrFlFr_Mot + "]]''.''\n\n";
return tmp_codewiki;
}
//--------------------------------------------------------------------------------------
// Définition dans le cas des mots qui utilisent fr-accord-un
//--------------------------------------------------------------------------------------
function Flex_un(new_codewiki,CrFlFr_Mot){
var tmp_codewiki=new_codewiki;
// on cherche d'abord à quelle forme on doit s'occuper
var pos_mp = tmp_codewiki.indexOf("uns'''");
var pos_fs = tmp_codewiki.indexOf("une'''");
var pos_fp = tmp_codewiki.indexOf("unes'''");
if( pos_fs>0 || pos_fp>0 ) {
tmp_codewiki = tmp_codewiki.replace(/œ̃\|fr\}\}/mg,"yn|fr}}");
}
if (pos_mp>0)
tmp_codewiki += "# ''Masculin pluriel de ''[[";
if (pos_fs>0)
tmp_codewiki += "# ''Féminin singulier de ''[[";
if (pos_fp>0)
tmp_codewiki += "# ''Féminin pluriel de ''[[";
tmp_codewiki += CrFlFr_Mot + "#fr|" + CrFlFr_Mot + "]]''.''\n\n";
return tmp_codewiki;
}