Subversion Repositories Applications.dictionnaire

Compare Revisions

Ignore whitespace Rev 10 → Rev 11

/scripts/dictionnaire.js
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
});
}
 
/scripts/helpers.js
15,34 → 15,6
return proche;
}
 
// http://stackoverflow.com/questions/1960473/unique-values-in-an-array
function getUnique(tableau) {
var u = {}, a = [];
for(var i = 0, l = tableau.length; i < l; ++i){
if(u.hasOwnProperty(tableau[i])) {
continue;
}
a.push(tableau[i]);
u[tableau[i]] = 1;
}
return a;
}
 
// http://stackoverflow.com/questions/281264/remove-empty-elements-from-an-array-in-javascript
function clean(tableau, deleteValue) {
for (var i = 0; i < tableau.length; i++) {
if (tableau[i] == deleteValue) {
tableau.splice(i, 1);
i--;
}
}
return tableau;
}
 
function trim(myString) {
return myString.replace(/^\s+/g,'').replace(/\s+$/g,'')
}
 
function levenshtein (s1, s2) {
// http://kevin.vanzonneveld.net
// + original by: Carlos R. L. Rodrigues (http://www.jsfromhell.com)
113,4 → 85,3
}
return v0[s1_len];
}