Utilisateur:Alex brollo/Gadget-Typo.js
Apparence
Note : après avoir enregistré 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 pressez Ctrl-F5 ou Ctrl-R (⌘-R sur un Mac) ;
- Google Chrome : Appuyez sur Ctrl-Maj-R (⌘-Shift-R sur un Mac) ;
- Internet Explorer : Maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ;
- Opera : Allez dans Menu → Settings (Opera → Préférences sur un Mac) et ensuite à Confidentialité & sécurité → Effacer les données d'exploration → Images et fichiers en cache.
// richiede EditInView
function runTypo() {
mediaWiki.editinview.editPage(autoTypo);
}
function autoTypo(txt) {
var noincludeList = produciLista(txt,'<noinclude>', '</noinclude>', 1);
var header = noincludeList[0];
var footer = noincludeList[noincludeList.length - 1];
var body = find_stringa(txt, header, footer, 0);
body=$.typo.exec(body);
return header+body+footer;
}
if (wgAction==="view" && wgCanonicalNamespace==="Page") {
$("#p-tb ul").append($('<li id="typo"><a href="javascript:runTypo();">Run typo fix</a></li>'));
}
/*
* Typo
*
* Bouton en haut à droite, près du bouton déconnexion. Met en forme la typographie du texte conformément aux conventions définies dans le [[Wikisource:Guide typographique|Guide typographique]] de Wikisource.
*
* Pour ajouter des fonctionnalités passer à la méthode $.typo.add() une fonction prenant comme paramètre la chaîne à nettoyer et renvoyant la chaîne nettoyée. Exemple :
* $(function() {
* $.typo.add(function(str) {
* str = str.replace(/(\n\n\n)+/g, "\n");
* return str;
* });
* });
*
* Auteur : Marc, Tpt
* Dernière révision : 25 mai 2011
*/
$.typo = {
todo: [],
add: function(fonction) {
$.typo.todo.push(fonction);
},
exec: function(txt) {
if (txt===undefined) {
txt = $('#wpTextbox1').val();
for (var i = 0; i < $.typo.todo.length; ++i) {
txt = $.typo.todo[i](txt);
}
$('#wpTextbox1').val(txt);
}
else {
for (var i = 0; i < $.typo.todo.length; ++i) {
txt = $.typo.todo[i](txt);
}
return txt;
}
},
addButtonToWikiEditorToolbar : function ( b ){
var tools = {};
tools[ b.imageId ] = {
label: b.speedTip,
type: 'button',
icon: b.imageFile,
action: {
type: 'callback',
execute: b.onClick
}
};
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
section: 'proofreadpage-tools',
group: 'other',
tools: tools
} );
$( '[rel="' + b.imageId + '"]' ).width( 22 );
},
addButtonToClassicToolbar : function ( b ){
mw.toolbar.addButton( {
imageFile: b.imageFile,
speedTip: b.speedTip,
imageId: b.imageId
} );
$( '#' + b.imageId ).off( 'click' ).click( function () {
b.onClick();
return false;
} ).width( 23 );
},
/* Auteur: Helderwiki */
editForm : function() {
var modules, add, img;
// This can be the string "0" if the user disabled the preference ([[bugzilla:52542#c3]])
if( mw.user.options.get( 'usebetatoolbar' ) == 1 ){
modules = [ 'ext.wikiEditor', 'ext.proofreadpage.page.edit' ];
img = '//upload.wikimedia.org/wikipedia/commons/8/82/Toolbaricon_regular_T.png';
add = $.typo.addButtonToWikiEditorToolbar;
} else if ( mw.user.options.get( 'showtoolbar' ) == 1 ){
modules = 'mediawiki.action.edit';
img = '//upload.wikimedia.org/wikipedia/commons/9/9f/Button_defaultsort.png';
add = $.typo.addButtonToClassicToolbar;
} else {
return;
}
$.when(
mw.loader.using( modules ),
$.ready
).then( function(){
add( {
imageFile: img,
speedTip: 'Correction de la mise en page et de la typographie',
imageId: 'wsTypo',
onClick: $.typo.exec
} );
} );
},
}
if($.inArray(mw.config.get('wgAction'), ['view','edit', 'submit']) !== -1 ) { // modifico per attivare in view
$(function() {
//typo
$.typo.add(function(str) {
// tiret conditionnel
str = str.replace(//g, "");
// espace
str = str.replace(/- \n/g, "");
// fix divers
str = str.replace(/ +/g," ");
//----- typographie
// espace insécable remplacé par une espace.
str = str.replace(/ ([;:!\?»])/g, ' $1');
str = str.replace(/« /g, '« ');
str = str.replace(/ »/g, ' »');
str = str.replace(/\n +/g, "\n");
str = str.replace(/ -/g, " —");
str = str.replace(/- /g, "— ");
str = str.replace(/ - /g, " — ");
str = str.replace(/ -,/g, " —,");
str = str.replace(/ - ,/g, " —,");
str = str.replace(/[ ]*([;:\!\?])[ ]*/g, " $1 ");
str = str.replace(/( *),( *)/g, ", ");
str = str.replace(/(\[\[[^]]*?) :/g, "$1:");
str = str.replace(/: ([^[]*?\]\])/g, ":$1");
str = str.replace(/[ ]+\)/g, ")");
str = str.replace(/([^'])'([^'])/g, "$1’$2");
str = str.replace(/’ /g, "’");
str = str.replace(/ ’/g, "’");
str = str.replace(/ ’ /g, "’");
str = str.replace(/ '',/g, "'',");
str = str.replace(/ ''\./g, "''.");
str = str.replace(/ \./g, "\.");
str = str.replace(/\.\.\./g, "…");
str = str.replace(/\.\.\.\.+/g, "\.\.\.");
str = str.replace(/etc\.\.+/g, "etc\.");
str = str.replace(/oeu/g, "œu");
str = str.replace(/O[Ee]/g, "Œ");
str = str.replace(/oeil/g, "œil");
str = str.replace(/"([^"].*?)"/g, "«$1»");
str = str.replace(/( *)«( *)/g, " « ");
str = str.replace(/( *)»( *)/g, " » ");
str = str.replace(/» ,/g, "»,");
str = str.replace(/» \./g, "».");
str = str.replace(/(\f*)’(\f*)/g, "’");
//sauts de lignes intempestifs
str = str.replace(/\n «/g, "\n«");
// fix catégories
str = str.replace(/\[\[ ?[Cc]ategory/g, "[[Catégorie");
str = str.replace(/\[\[ ?[Cc]atégorie ?: ?/g, "[[Catégorie:");
// réparation liens internes
str = str.replace(/\[\[ ?([^\]]*?) ?\]\]/g, "[[$1]]");
str = str.replace(/\[\[([^\]]*?)( |_)#([^\]]*?)\]\]/g, "[[$1#$3]]");
// syntaxe wiki
str = str.replace(/<i>(.*?)<\/i>/gi, "''$1''");
str = str.replace(/<b>(.*?)<\/b>/gi, "'''$1'''");
str = str.replace(/<br\/>/gi, "<br />");
str = str.replace(/<br>/gi, "<br />");
str = str.replace(/^<br \/>/g, "<nowiki />"); //pour le saut de ligne entre 2 pages
//* puces
str = str.replace(/^([\*#]+) /gm, "$1");
str = str.replace(/^([\*#]+)/gm, "$1 ");
//mise en page
str = str.replace(/\n*(\{\{Titre)/g, "\n$1");
str = str.replace(/\n*(\{\{Navigateur)/g, "\n$1");
str = str.replace(/\[\[(.*?) —/g, "\[\[$1 -");
str = str.replace(/\|( *)—( *)/g, "\|");
str = str.replace(/(formatnum\s:\s)+/g, "formatnum:");
// les balises sont cassées par les regexp formatant les : et les ;
str = str.replace(/= « ([^»"]*) » /g, "=\"$1\" ");
// FIXME: répare les balises mais en même temps casse la typo des textes
// contenant des xxx : yyy ; zzz il faut faire quelque chose de plus fin.
str = str.replace(/"([^":]*) : ([^:"]*) ; */g, "\"$1:$2; ");
str = str.replace(/([^ ]); ([^":]*) : ([^:"]*) ; */g, "$1; $2:$3; ");
str = str.replace(/([^ ]); ([^":]*) : ([^:"]*) ; */g, "$1; $2:$3; ");
str = str.replace(/(…\. )+/g, "… ");
str = str.replace(/( …)+/g, "…");
// Défaire certaines modifications, au moins pour les entités html les plus fréquemment
// utilisé. Cet ensemble de modification doit être faite après toutes les
// autres modifications.
str = str.replace(/&(nbsp|ldquo|rdquo) ;/g, "&$1;");
// éviter l'apparition d'espace en fin de ligne ou avant la fermeture d'un tag
str = str.replace(/\n »/g, "\n»");
str = str.replace(/([,;:!?»]) (\n|<\/)/g, "$1$2");
// éviter l'apparition d'espace avant la fin d'italiques
str = str.replace(/([;:!\?»]) ''([ \n])/g, "$1''$2");
// éviter d'ajouter un espace après une séquence de : en début de ligne
str = str.replace(/\n *(:+) */g, "\n$1");
return $.trim(str);
});
//simplifier certains liens : [[Dog|dog]] to [[dog]] and [[Dog|dogs]] to [[dog]]s
$.typo.add(function(str) {
var m = str.match(/\[\[([^[]*?)\|([^[]*?)\]\]/g);
if (m) {
for (var i = 0; i < m.length; i++) {
var n_arr = m[i].toString().match(/\[\[([^[]*?)\|([^[]*?)\]\]/);
var n = n_arr[0];
var a = n_arr[1];
var b = n_arr[2];
var temp = $.trim(a).toLowerCase();
if (b.indexOf(a) === 0 || b.indexOf(temp) === 0) {
var k = n.replace(/\[\[([^\]\|]*?)\|(\1)([\w]*?)\]\]/i, "[[$2]]$3");
str = str.replace(n, k);
}
}
}
str = str.replace(/\[\[([^\]\|]+)\|([^\]\|]+)\]\]([A-Za-z\'][A-Za-z]*)([\.\,\;\:\"\!\?\s\n])/g, "[[$1|$2$3]]$4");
return str;
});
$.typo.editForm();
});
}
// </source>