Subversion Repositories Applications.dictionnaire

Rev

Rev 10 | Rev 12 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 10 Rev 11
Line 60... Line 60...
60
var set = 'p, span:not(.definition_term), td, pre, div, li';
60
var set = 'p, span:not(.definition_term), td, pre, div, li';
Line 61... Line 61...
61
 
61
 
62
// Note: utiliser \\b plutôt que \\W pour matcher les bordures de mots
62
// Note: utiliser \\b plutôt que \\W pour matcher les bordures de mots
63
// en incluant début et fin de ligne
63
// en incluant début et fin de ligne
64
var regexp_complete = null;
-
 
65
 
-
 
66
var regexp_context = null;
64
var regexp_complete = null;
Line 67... Line 65...
67
var regexp_thin = null;
65
var regexp_thin = null;
68
 
66
 
Line 79... Line 77...
79
	// être pris pour des bordures de mots
77
	// être pris pour des bordures de mots
80
	'\\w' +
78
	'\\w' +
81
	']|^){1,24}';
79
	']|^){1,24}';
Line 82... Line -...
82
 
-
 
83
 
-
 
84
function supprimerAccents(str) { 
-
 
85
    var rExps=[ 
-
 
86
		{re:/[\xC0-\xC6]/g, ch:'A'}, 
-
 
87
		{re:/[\xE0-\xE6]/g, ch:'a'}, 
-
 
88
		{re:/[\xC8-\xCB]/g, ch:'E'}, 
-
 
89
		{re:/[\xE8-\xEB]/g, ch:'e'}, 
-
 
90
		{re:/[\xCC-\xCF]/g, ch:'I'}, 
-
 
91
		{re:/[\xEC-\xEF]/g, ch:'i'}, 
-
 
92
		{re:/[\xD2-\xD6]/g, ch:'O'}, 
-
 
93
		{re:/[\xF2-\xF6]/g, ch:'o'}, 
-
 
94
		{re:/[\xD9-\xDC]/g, ch:'U'}, 
-
 
95
		{re:/[\xF9-\xFC]/g, ch:'u'}, 
-
 
96
		{re:/[\xD1]/g, ch:'N'}, 
-
 
97
		{re:/[\xF1]/g, ch:'n'} ]; 
-
 
98
    for(var i=0, len=rExps.length; i<len; i++) 
-
 
99
        str=str.replace(rExps[i].re, rExps[i].ch);
-
 
100
    return str; 
-
 
101
};
-
 
102
 
-
 
103
// c'est moche mais le mauvais support de l'unicode dans 
-
 
104
// javascript ne me permet pas de faire mieux
-
 
105
function etendreChaineAccents(str) {
-
 
106
    return str.replace('a',"(a|à|á|â|ã|ä|å)")
-
 
107
		.replace('e',"(e|è|é|ê|ë)")
-
 
108
		.replace('i',"(i|ì|í|î|ï)")
-
 
109
		.replace('o',"(o|ò|ó|ô|õ|ö)")
-
 
110
		.replace('u',"(u|ù|ú|û|ü)")
-
 
111
		.replace('y',"(ýÿ)")
-
 
112
		.replace('a',"(a|à|á|â|ã|ä|å)")
-
 
113
		.replace('æ',"(ae|æ)")
-
 
114
		.replace('ç',"(ç|c)")
-
 
115
		.replace('ñ',"(ñ|n)") 
-
 
116
		.replace('œ',"(œ|oe)");  
-
 
117
}
80
 
118
 
81
 
119
function afficherLienDefinitions() {
82
function afficherLienDefinitions() {
120
	html = '<div id="conteneur_activation_definition"><a href="#">rechercher les définitions</a></div>';
83
	html = '<div id="conteneur_activation_definition"><a href="#">rechercher les définitions</a></div>';
121
	$('#conteneur_activation_definition').live('click', function(event) {
84
	$('#conteneur_activation_definition').live('click', function(event) {
Line 129... Line 92...
129
		}
92
		}
130
	});
93
	});
131
	$('body').append(html);
94
	$('body').append(html);
132
}
95
}
Line 133... Line -...
133
 
-
 
134
function normaliserMotPourRecherche(str) {
-
 
135
	str = supprimerAccents(str);
-
 
136
	str = etendreChaineAccents(str);
-
 
137
	return str;
-
 
138
}
-
 
139
 
96
 
140
$.fn.remplacerDefinitions = function(mots) {
97
$.fn.remplacerDefinitions = function(mots) {
141
    this.each(function() {
98
    this.each(function() {
142
        $(this).contents().filter(function() {
99
        $(this).contents().filter(function() {
143
        	return (this.nodeType == 3 && ! (($(this).data("count") || 0) > max_passages));
100
        	return (this.nodeType == 3 && ! (($(this).data("count") || 0) > max_passages));
Line 179... Line 136...
179
	var liste = [], liste_complete = [];
136
	var liste = [], liste_complete = [];
Line 180... Line 137...
180
 
137
 
181
	// regexp d'extraction du contexte, sans limite aux bords de "mot",
138
	// regexp d'extraction du contexte, sans limite aux bords de "mot",
182
	// peu amener des faux positifs, et notamment ne pas matcher au mieux.
139
	// peu amener des faux positifs, et notamment ne pas matcher au mieux.
183
	// Eg: subsessiles match "sessile" et non "subsessile".
140
	// Eg: subsessiles match "sessile" et non "subsessile".
184
	while( (matches_c = regexp_thin.exec(texte)) ) {
-
 
185
		//liste.push(getUnique(clean(matches_c)));
-
 
186
		liste.push(matches_c);
-
 
187
	}
-
 
188
 
141
	while( (matches_c = regexp_thin.exec(texte)) ) liste.push(matches_c);
Line 189... Line 142...
189
	if(liste.length == 0) return [null];
142
	if(liste.length == 0) return [null];
190
 
143
 
191
	// regexp de validation des bordure de mots, ne conserve que des matches correct
144
	// regexp de validation des bordure de mots, ne conserve que des matches correct
192
	// vis-à-vis de la bordure gauche
-
 
193
	while( (matches_c = regexp_complete.exec(texte)) ) {
-
 
Line 194... Line 145...
194
		liste_complete.push(matches_c[1]);
145
	// vis-à-vis de la bordure gauche
195
	}
146
	while( (matches_c = regexp_complete.exec(texte)) ) liste_complete.push(matches_c[1]);
196
 
147
 
197
	// si une match n'est pas dans le tableau des mots autorisés (indexOf)
148
	// si une match n'est pas dans le tableau des mots autorisés (indexOf)
Line 198... Line 149...
198
	for(var i = 0; i < liste.length; i++) {
149
	for(var i = 0; i < liste.length; i++) {
199
		if($.inArray(liste[i][2], liste_complete) == -1) liste.splice(i, 1);
150
		if($.inArray(liste[i][2], liste_complete) == -1) liste.splice(i, 1);
Line 200... Line -...
200
	}
-
 
201
 
151
	}
202
	return [liste, liste_complete]
152
 
203
}
153
	return [liste, liste_complete]
204
 
154
}
205
 
155
 
206
function getMotsADefinitions() {
156
function getMotsADefinitions() {
207
	$.ajax({
157
	$.ajax({
208
		url: URL_BASE_SERVICE+'mots/', // provient de dictionnaire.config.js
-
 
209
		success: function(data) {
158
		url: URL_BASE_SERVICE+'mots/', // provient de dictionnaire.config.js
210
			motsAyantDefinition = data;
159
		success: function(data) {
211
			batirRegexp(motsAyantDefinition);
160
			motsAyantDefinition = data;
212
			$(set).remplacerDefinitions(motsAyantDefinition);
161
			batirRegexp(motsAyantDefinition);
213
 
162
			$(set).remplacerDefinitions(motsAyantDefinition);
Line 279... Line 228...
279
			dictionnaire[mot] = definition;
228
			dictionnaire[mot] = definition;
280
			element.after(formaterDefinition(element));
229
			element.after(formaterDefinition(element));
281
			afficherPopupDefinition();
230
			afficherPopupDefinition();
282
		},
231
		},
283
		dataType: "JSON",
232
		dataType: "JSON",
284
		global: false
233
		global: false,
-
 
234
		async: false
285
	});
235
	});
286
}
236
}
Line 287... Line 237...
287
 
237
 
288
function afficherPopupDefinition() {
238
function afficherPopupDefinition() {