Note : après avoir publié vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

  • Firefox / Safari : maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou appuyez sur Ctrl + F5 ou Ctrl + R (⌘ + R sur un Mac).
  • Google Chrome : appuyez sur Ctrl + Maj + R (⌘ + Shift + R sur un Mac).
  •  Edge : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl + F5.
function liste_region_en_fr() {   var textbox = $('#wpTextbox1');   var alltext = textbox.val();   var selstart = textbox[0].selectionStart;   var selend = textbox[0].selectionEnd;   var before = alltext.substr(0, selstart);   var selected = alltext.substr(selstart, selend - selstart);   var after = alltext.substr(selend);   var text = selected;   var expr = /region([0-9]+)([^=]+)/m;   var newtext = '';   for (; ; ) {     var res = expr.exec(text);     if (res === null) {       newtext += text;       break;     }     var repl = res[2];     if (repl == 'name') {       repl = 'nom';     } else if (repl == 'color') {       repl = 'couleur';     } else if (repl == 'items') {       repl = 'elements';     }     newtext = newtext + text.substr(0, res.index) + repl + 'region' + res[1];     text = text.substr(res.index + res[0].length);   }   textbox.val(before+newtext+after); }  function addToolbar() { 	var myhtml = "<div style='overflow: hidden; clear: both;float: left;width: 100%' id='my-tbl-links'>"; 	myhtml += '<style>#my-tbl-links a{margin-left: 1em;margin-rigth: 1em}</style>'; 	myhtml += '<a href="#">Heure</a><a href="#">Minutes</a><a href="#">Horaire</a><a href="#">Mois</a>'; 	myhtml += '<a href="#">¥</a><a href="#">€</a><a href="#">Nombre</a><a href="#">Guillemets</a><a href="#">Guillemets-ital.</a>'; 	myhtml += '<a href="#">Lang=ja</a><a href="#">Regionlist_enfr</a><a href="#">Unité</a>'; 	myhtml += '<a href="#">Marqueur</a>'; 	myhtml += '<a href="#">Traduit de</a>'; 	myhtml += '<a href="#">CoordPrecision</a>'; 	myhtml += '<a href="#">Listing</a>'; 	myhtml += '<a href="#">Climat</a>'; 	myhtml += '<a href="#">Route</a>'; 	myhtml += "</div>"; 	 	$(myhtml).insertAfter($(".wikiEditor-ui-toolbar .sections")); 	$("#my-tbl-links a").click(function(event){ 	  event.preventDefault(); 	  var sel = $(this).text(); 	  var text = null; 	  // test type of action 	  if (sel=="Regionlist_enfr") { 	  	liste_region_en_fr(); 	  	return; 	  }  else if (sel=="CoordPrecision") { 	  	coordPrecision(); 	  } else if (sel=="Heure") { 	    text = ["{{Heure|", "}}"]; 	  } else if (sel=="Minutes") { 	    text = ["{{Heure||", "}}"]; 	  } else if (sel=="Mois") { 	    text = ["{{Mois|", "}}"]; 	  } else if (sel=="Horaire") { 	    text = ["{{Horaire|||h1||h2|", "}}"]; 	  } else if (sel=="Nombre") { 	    text = ["{{formatnum:", "}}"]; 	  } else if (sel=="Guillemets") { 	    text = ["« ", " »"]; 	  } else if (sel=="Guillemets-ital.") { 	    text = ["« ''", "'' »"]; 	  } else if (sel=="¥") { 	    text = ["{{Prix|", "|¥}}"]; 	  } else if (sel=="€") { 	    text = ["{{Prix|", "|€}}"]; 	  } else if (sel=="Lang=ja") { 	    text = ["{{Lang|ja|", "}}"]; 	  } else if (sel=="Unité") { 	    text = ["{{Unité|", "}}"]; 	  } else if (sel=="Traduit de") { 	    text = ["{{Traduit de|en|NOMANGLAIS|JOUR/MOIS/2017|NUMEROVERSION}}", ""]; 	  } else if (sel=="Marqueur") { 	    text = ["{{Marqueur|nom=", "|type=|latitude=|longitude=|url=|wikipédia=}}"]; 	  } else if (sel=="Listing") { 	  	text = []; 	  } else if (sel=="Climat") { 	  	text = []; 	  } else if (sel=="Route") { 	  	text = []; 	  } 	  if (text===null) { 	    return; 	  } 	  var textbox = $("#wpTextbox1"); 	  var alltext = textbox.val(); 	  var selstart = textbox[0].selectionStart; 	  var selend = textbox[0].selectionEnd; 	  var before = alltext.substr(0, selstart); 	  var selected = alltext.substr(selstart, selend-selstart); 	  var after = alltext.substr(selend); 	  if (sel=="Unité") { 	    var parsed = selected.match(/([0-9-.]+)(.*)/); 	    if (parsed===null) { 	    	selected = selected + "|"; 	    } else { 	    	var unit = parsed[2]; 	    	if (unit=="km") { 	    		unit = "km|abr=kilomètre"; 	    	} else if (unit=="km²") { 	    		unit = "km²|abr=kilomètre carré"; 	    	} else if (unit=="m") { 	    		unit = "m|abr=mètre"; 	    	} else if (unit=="m²") { 	    		unit = "m²|abr=mètre carré"; 	    	} else if (unit=="kg") { 	    		unit = "kg|abr=kilogramme"; 	    	} else if (unit=="g") { 	    		unit = "g|abr=gramme"; 	    	} 	    	selected = parsed[1] + "|" + unit; 	    } 	  } 	  if (sel=="Listing") { 	  	textbox.val(before+translateListing(selected)+after); 	  } else if (sel=="Climat") { 	  	textbox.val(before+translateClimat(selected)+after); 	  } else if (sel=="Route") { 	  	textbox.val(before+translateRoute(selected)+after); 	  } else { 	  	textbox.val(before+text[0]+selected+text[1]+after); 	  } 	}); }  $(document).ready(function () { 	window.setTimeout(addToolbar, 1000); 	addSourceLink("Diff", "Diff", 1); 	addSourceLink("Permalink", "Permalink", 1); 	addSourceLink("Diff", "Diff2", 2); });  function translateClimat(text) {   let expr = /\|\s*(.*?)(high|low|precip)?\s*=(.*)/g;   return text.replace(expr, function (all, param1, type, value) {     value = value ? value.trim()  : '';     if (param1 == 'description') {       return '| lien source = ' + value;     }     if (!type) {       return "| " + param1 + ' = ' + value;     }     let mappingType = {       'low': 'tmin',       'high': 'tmax',       'precip': 'prec'     };     if (type in mappingType) {       type = mappingType[type];     }     let mappingMonth = {       'feb': 'fev',       'apr': 'avr',       'may': 'mai',       'jun': 'jui',       'aug': 'aou'     };     let month = (param1 in mappingMonth) ? mappingMonth[param1] : param1;     return "| " + type + '-' + month + ' = ' + value;   }); }  function translateRoute(text) { 	var repl = [ 	  ["=W", "=O"], 	  ["=END", "=FIN"], 	  ["File:", "Fichier:"], 	  ["into ", "rejoint "], 	  ["Tokyo/", ""], 	  ["Chuo\\|", "Chūō (Tokyo)|"], 	  ["East\\|", "Est de Tokyo|"], 	  ["Tokyo Haneda Airport\\|", "Tokyo#Aéroport de Haneda", "i"], 	  ["Rtarrow", "flèche d", "i"], 	  ["lfarrow", "flèche g", "i"], 	]; 	 	for(var cnt in repl) { 	  var tmp = repl[cnt]; 	  var flags = "g"; 	  if (tmp[2]) { 	    flags += tmp[2]; 	  } 	  repl[cnt] = [new RegExp(tmp[0], flags), tmp[1]]; 	} 	var new_text = text; 	for(var cnt in repl) { 	  new_text = new_text.replace(repl[cnt][0], repl[cnt][1]); 	} 	return new_text; }  function addSourceLink(special, label, cnt) { 	var target = $("#ResumeDeluxe"); 	target.append(" • "); 	var tmp = $("<a href='#'>"+label+" 'En'</a>").appendTo(target); 	 	tmp.click(function(event){ 	  event.preventDefault(); 	  var target = $("#wpSummary"); 	  var text = target.val()+" depuis la version anglophone "; 	  if (cnt==1) { 	  	text += "([[:en:Special:"+special+"/VERSION|source]])"; 	  } else if(cnt==2) { 	  	text += "(versions [[:en:Special:"+special+"/VERSION|source]] à [[:en:Special:"+special+"/VERSION|source]])"; 	  } 	  target.val(text); 	}); }  var coordPrecision = function () {   function radians(deg) {     return deg * Math.PI / 180;   }   function distance(lon1, lat1, lon2, lat2) {     var radius = 6371; // km     var dlat = radians(lat2 - lat1);     var dlon = radians(lon2 - lon1);     var a = Math.sin(dlat / 2) * Math.sin(dlat / 2) + Math.cos(radians(lat1)) * Math.cos(radians(lat2)) * Math.sin(dlon / 2) * Math.sin(dlon / 2);     var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));     var d = radius * c;     return d;   }   function distance_text(lon1, lat1, lon2, lat2) {     var d = distance(lon1, lat1, lon2, lat2);     return (d > 1) ? (d + 'km')  : (d * 1000 + 'm');   }   function distance_l(lon, lat) {     return distance(lon, lat, lon + 1, lat);   }   function distance_n(lon, lat, n) {     var threshold = Math.pow(10, - n);     return distance(lon, lat, lon + threshold, lat + threshold) * 1000;   }   function round1(num) {     if (num - Math.floor(num) === 0) {       return num;     }     var sign = Math.sign(num);     var positive = num / sign;     var nb_dec = ('' + num).split('.') [1].length;     var mult = Math.pow(10, nb_dec - 1);     return Math.round(num * mult) / mult;   }   function round1_(num) {     if (num - Math.floor(num) === 0) {       return num;     }     var nb_dec = ('' + num).split('.') [1].length;     return parseFloat(num.toFixed(nb_dec - 1));   }   function precision(lorig_lon, orig_lat, lon, lat) {     var lon1 = round1(lon);     var lat1 = round1(lat);     console.log("precision", lon, lon1, lat, lat1);     var p_lon = lon==lon1 ? null : new Point(lon1, lat, distance(lorig_lon, orig_lat, lon1, lat));     var p_lat = lat==lat1 ? null : new Point(lon, lat1, distance(lorig_lon, orig_lat, lon, lat1));     return [p_lon, p_lat];   }   function Point(lon, lat, prec) {     this.lon = lon;     this.lat = lat;     this.prec = prec;     this.label = '';   }   Point.prototype.prec_text = function () {     if (this.prec > 1) {       return this.prec.toFixed(1) + 'km';     } else if (this.prec > 0.001) {       return (this.prec * 1000).toFixed(1) + 'm';     } else {       return (this.prec * 100000).toFixed(1) + 'cm';     }   };   function process(orig_lon, orig_lat) {     var lat = orig_lat;     var lon = orig_lon;     var all_choices = [];     for (var cnt=0; cnt<30;++cnt) {       var res = precision(orig_lon, orig_lat, lon, lat);       var res1 = res[0];       var res2 = res[1];       var choice = null;       //console.log(res1, res2);       if (res1 === null) {         if (res2 !== null) {           choice = res2;         }       } else if (res2 === null) {         choice = res1;       } else {         choice = res1.prec < res2.prec ? res1 : res2;       }       if (choice === null) {         break;       }       all_choices.push(choice);       console.log('longitude=' + choice.lon + ' | latitude=' + choice.lat + ' => ' + choice.prec_text());       lon = choice.lon;       lat = choice.lat;     }     // display      var limits = [       ['shop',       0.001],       [         'city',         0.25       ],       [         'big city',         3       ]     ];     var prev = null;     for (cnt in all_choices) {       var choice2 = all_choices[cnt];       console.log(limits);       if (limits.length > 0 && choice2.prec > limits[0][1]) {         if (prev === null) {           choice2.label = limits[0][0];         } else {           prev.label = limits[0][0];         }         limits.shift();       }       prev = choice2;     }     // display result      $('#coordPrecision').remove();     $('.editOptions').before('<div id=\'coordPrecision\'><ul/></div>');     var out = $('#coordPrecision ul');     for (cnt in all_choices) {       var choice3 = all_choices[cnt];       var txt = 'latitude=' + choice3.lat + ' | longitude=' + choice3.lon + ' => ' + choice3.prec_text();       if (choice3.label !== '') {         txt += ' (' + choice3.label + ')';       }       out.append('<li>' + txt + '</li>');     }   }   function processGUI() {     var textbox = $('#wpTextbox1');     var alltext = textbox.val();     var selstart = textbox[0].selectionStart;     var selend = textbox[0].selectionEnd;     var selected = alltext.substr(selstart, selend - selstart);     var res = /latitude *= *(-?[0-9.]+)/.exec(selected);     if (res != null) {       var lat = res[1];       var res = /longitude *= *(-?[0-9.]+)/.exec(selected);       if (res != null) {         process(parseFloat(res[1]), parseFloat(lat));       }     }   }   return processGUI; }();