62,8 → 62,6 |
// Note: utiliser \\b plutôt que \\W pour matcher les bordures de mots |
// en incluant début et fin de ligne |
var regexp_complete = null; |
|
var regexp_context = null; |
var regexp_thin = null; |
|
// nombre maximum de passages de la détection sur un node donné |
81,41 → 79,6 |
']|^){1,24}'; |
|
|
function supprimerAccents(str) { |
var rExps=[ |
{re:/[\xC0-\xC6]/g, ch:'A'}, |
{re:/[\xE0-\xE6]/g, ch:'a'}, |
{re:/[\xC8-\xCB]/g, ch:'E'}, |
{re:/[\xE8-\xEB]/g, ch:'e'}, |
{re:/[\xCC-\xCF]/g, ch:'I'}, |
{re:/[\xEC-\xEF]/g, ch:'i'}, |
{re:/[\xD2-\xD6]/g, ch:'O'}, |
{re:/[\xF2-\xF6]/g, ch:'o'}, |
{re:/[\xD9-\xDC]/g, ch:'U'}, |
{re:/[\xF9-\xFC]/g, ch:'u'}, |
{re:/[\xD1]/g, ch:'N'}, |
{re:/[\xF1]/g, ch:'n'} ]; |
for(var i=0, len=rExps.length; i<len; i++) |
str=str.replace(rExps[i].re, rExps[i].ch); |
return str; |
}; |
|
// c'est moche mais le mauvais support de l'unicode dans |
// javascript ne me permet pas de faire mieux |
function etendreChaineAccents(str) { |
return str.replace('a',"(a|à|á|â|ã|ä|å)") |
.replace('e',"(e|è|é|ê|ë)") |
.replace('i',"(i|ì|í|î|ï)") |
.replace('o',"(o|ò|ó|ô|õ|ö)") |
.replace('u',"(u|ù|ú|û|ü)") |
.replace('y',"(ýÿ)") |
.replace('a',"(a|à|á|â|ã|ä|å)") |
.replace('æ',"(ae|æ)") |
.replace('ç',"(ç|c)") |
.replace('ñ',"(ñ|n)") |
.replace('œ',"(œ|oe)"); |
} |
|
function afficherLienDefinitions() { |
html = '<div id="conteneur_activation_definition"><a href="#">rechercher les définitions</a></div>'; |
$('#conteneur_activation_definition').live('click', function(event) { |
131,12 → 94,6 |
$('body').append(html); |
} |
|
function normaliserMotPourRecherche(str) { |
str = supprimerAccents(str); |
str = etendreChaineAccents(str); |
return str; |
} |
|
$.fn.remplacerDefinitions = function(mots) { |
this.each(function() { |
$(this).contents().filter(function() { |
181,18 → 138,12 |
// regexp d'extraction du contexte, sans limite aux bords de "mot", |
// peu amener des faux positifs, et notamment ne pas matcher au mieux. |
// Eg: subsessiles match "sessile" et non "subsessile". |
while( (matches_c = regexp_thin.exec(texte)) ) { |
//liste.push(getUnique(clean(matches_c))); |
liste.push(matches_c); |
} |
|
while( (matches_c = regexp_thin.exec(texte)) ) liste.push(matches_c); |
if(liste.length == 0) return [null]; |
|
// regexp de validation des bordure de mots, ne conserve que des matches correct |
// vis-à-vis de la bordure gauche |
while( (matches_c = regexp_complete.exec(texte)) ) { |
liste_complete.push(matches_c[1]); |
} |
while( (matches_c = regexp_complete.exec(texte)) ) liste_complete.push(matches_c[1]); |
|
// si une match n'est pas dans le tableau des mots autorisés (indexOf) |
for(var i = 0; i < liste.length; i++) { |
202,7 → 153,6 |
return [liste, liste_complete] |
} |
|
|
function getMotsADefinitions() { |
$.ajax({ |
url: URL_BASE_SERVICE+'mots/', // provient de dictionnaire.config.js |
210,7 → 160,6 |
motsAyantDefinition = data; |
batirRegexp(motsAyantDefinition); |
$(set).remplacerDefinitions(motsAyantDefinition); |
|
}, |
dataType: "JSON", |
global: false |
281,7 → 230,8 |
afficherPopupDefinition(); |
}, |
dataType: "JSON", |
global: false |
global: false, |
async: false |
}); |
} |
|