Projet:Animation et bande dessinée asiatiques/monobook.js
Apparence
/* <pre><nowiki>
* Cette page contient des fonction javascript pour vous aider à taper du texte japonais romanisé
* en Hepburn, comme demandé sur Wikipédia.
*
* Elle offre les fonctionnalités suivantes (pour Firefox2.0, remplacer Alt -en fait, AltGr, celui de
* droite- par Shift+Alt_gauche):
* 1. Une barre contenant Ā ā Ē ē Ī ī Ō ō Ū ū en-dessous de la zone de saisie
* pour une insertion facile de ces caractères
* 2. Des raccourcis pour la même chose: minuscule, respectivement Alt-a, Alt-f, Alt-i, Alt-o, Alt-v
* majuscule, respectivement Alt-,, Alt-;, Alt-:, Alt-!, Alt-ù
* 3. Une fonction de conversion, exécutable par l'onglet ''hepburn'' ou le raccourci Alt->
* qui convertit dans la sélection courante les séquence aa, ee..., Aa, Ee..., â, ..., Â, ...
* en les lettres équivalentes avec macrons. Elle convertit aussi ''cch'' en ''tch''.
* 4. Une fonction de conversion prospective, exécutable par l'onglet ''macron'' ou le raccourci Alt-²
* qui convertit dans les sélection courante des noms qui apparaissent comme manquant probablement
* d'un diacritique. Cela concerne principalement des noms propres (reconnaissable à la majuscule)
* comme Tokyo, Keio, Osaka...
*
* Cette fonction n'est testée que sous IE et Firefox.
*
* Elle a un bug connu: si la sélection se termine sur une fin de ligne,
* le retour chariot est effacé. Prudence, donc.
*
* Attention, le script ne connaît pas le japonais, il transformera omou en omō, ce qui
* n'est pas souhaitable (car le 'ou' est une fin de verbe, pas un 'o' long).
*
* Sous Mozilla, si vous lancer la fonction au sein d'un texte est plus grand que la textarea
* Mozilla vous remettra en haut du texte. Il suffit de déplacer le curseur pour revenir à
* la bonne place.
*
* Pour rajouter ces fonctionnalités, Rajouter la ligne suivante dans
* votre monobook.js ([[Utilisateur:Votre_login/monobook.js]]):
* importScript('Projet:Animation et bande dessinée asiatiques/monobook.js');
*
* Contactez [[User talk:Eden2004|]] en cas de dysfonctionnement.
*/
/* Japanisation, grâce à l'aide de [[User:EDUCA33E]] et [[USER:GôTô]] */
var tabAction = "p-cactions";
function addJapanButton()
{
// condition à améliorer
var toolbar = document.getElementById("toolbar");
if (!toolbar) return;
var l = document.getElementById(tabAction);
var t = l.innerHTML;
var ind = t.toLowerCase().indexOf("</ul>");
var before = t.substring(0,ind);
var after = t.substring(ind);
var pitem = "<li><a href='javascript:hepburn();' accesskey=\">\">"+
"<div id='japan' style='display:inline;'>" +
"Hepburn" +
"</div></a></li>";
l.innerHTML = before + pitem + after ;
}
function hepburn() {
var txt = document.editform.wpTextbox1;
txt.focus();
if ( window.getSelection )
{
// mozilla
if( txt.selectionStart || txt.selectionStart == '0')
{
var text = txt.value.substring(txt.selectionStart, txt.selectionEnd);
var s2 = txt.value;
text = text.replace(/aa/g, "ā").replace(/Aa/g, "Ā");
// La norme Hepburn réserve la conversion suivante aux noms non-sino-japonais.
//text = text.replace(/ii/g, "ī").replace(/Ii/g, "Ī");
text = text.replace(/ee/g, "ē").replace(/Ee/g, "Ē");
text = text.replace(/uu/g, "ū").replace(/Uu/g, "Ū");
text = text.replace(/oo/g, "ō").replace(/Oo/g, "Ō");
text = text.replace(/ou/g, "ō").replace(/Ou/g, "Ō");
text = text.replace(/â/g, "ā").replace(/Â/g, "Ā");
// La norme Hepburn réserve la conversion suivante aux noms non-sino-japonais.
//text = text.replace(/î/g, "ī").replace(/Î/g, "Ī");
text = text.replace(/ê/g, "ē").replace(/Ê/g, "Ē");
text = text.replace(/û/g, "ū").replace(/Û/g, "Ū");
text = text.replace(/ô/g, "ō").replace(/Ô/g, "Ō");
text = text.replace(/cch/g, "tch");
var savestart = txt.selectionStart;
txt.value = s2.substring(0, txt.selectionStart)
+ text
+ s2.substr(txt.selectionEnd);
txt.selectionStart = savestart + text.length;
txt.selectionEnd = savestart + text.length;
}
}
else if( document.getSelection )
{
// Safari/Konqueror
var text = document.getSelection( ).replace(/aa/g, "ā");
//Manque la suite...
}
else
{
// internet explorer
var range = document.selection.createRange();
var text = range.text;
text = text.replace(/aa/g, "ā").replace(/Aa/g, "Ā");
// La norme Hepburn réserve la conversion suivante aux noms non-sino-japonais.
//text = text.replace(/ii/g, "ī").replace(/Ii/g, "Ī");
text = text.replace(/ee/g, "ē").replace(/Ee/g, "Ē");
text = text.replace(/uu/g, "ū").replace(/Uu/g, "Ū");
text = text.replace(/oo/g, "ō").replace(/Oo/g, "Ō");
text = text.replace(/ou/g, "ō").replace(/Ou/g, "Ō");
text = text.replace(/â/g, "ā").replace(/Â/g, "Ā");
// La norme Hepburn réserve la conversion suivante aux noms non-sino-japonais.
//text = text.replace(/î/g, "ī").replace(/Î/g, "Ī");
text = text.replace(/ê/g, "ē").replace(/Ê/g, "Ē");
text = text.replace(/û/g, "ū").replace(/Û/g, "Ū");
text = text.replace(/ô/g, "ō").replace(/Ô/g, "Ō");
text = text.replace(/cch/g, "tch");
range.text = text;
}
}
function customSpecialChars()
{
var elmtP = document.getElementById("editpage-copywarn")
if (elmtP == undefined)
return // Pas en édition
//elmtP = elmtP.getElementsByTagName("table")[0]
var str = "Caractères spéciaux : "
str += "<a href=\"javascript:insertTags('Ā','', '')\" accesskey=\",\">Ā</a> "
str += "<a href=\"javascript:insertTags('ā','', '')\" accesskey=\"a\">ā</a> "
str += "<a href=\"javascript:insertTags('Ē','', '')\" accesskey=\";\">Ē</a> "
str += "<a href=\"javascript:insertTags('ē','', '')\" accesskey=\"f\">ē</a> "
str += "<a href=\"javascript:insertTags('Ī','', '')\" accesskey=\":\">Ī</a> "
str += "<a href=\"javascript:insertTags('ī','', '')\" accesskey=\"i\">ī</a> "
str += "<a href=\"javascript:insertTags('Ō','', '')\" accesskey=\"!\">Ō</a> "
str += "<a href=\"javascript:insertTags('ō','', '')\" accesskey=\"o\">ō</a> "
str += "<a href=\"javascript:insertTags('Ū','', '')\" accesskey=\"ù\">Ū</a> "
str += "<a href=\"javascript:insertTags('ū','', '')\" accesskey=\"v\">ū</a> "
elmtP.innerHTML = "<br/ ><center>" + str + "</center><br />" + elmtP.innerHTML
}
// Quick-replacer pour rectifier les mots sans diacritique triviaux sur les pages japonaises
var tabAction = "p-cactions";
function addAutoMacronButton()
{
// condition à améliorer
var toolbar = document.getElementById("toolbar");
if (!toolbar) return;
var l = document.getElementById(tabAction);
var t = l.innerHTML;
var ind = t.toLowerCase().indexOf("</ul>");
var before = t.substring(0,ind);
var after = t.substring(ind);
var pitem = "<li><a href='javascript:macron();' accesskey=\"²\">"+
"<div id='macron' style='display:inline;'>" +
"Macron" +
"</div></a></li>";
l.innerHTML = before + pitem + after ;
}
function macron() {
var txt = document.editform.wpTextbox1;
txt.focus();
if ( window.getSelection )
{
// mozilla
if( txt.selectionStart || txt.selectionStart == '0')
{
var text = txt.value.substring(txt.selectionStart, txt.selectionEnd);
var s2 = txt.value;
text = text.replace(/Tokyo/g, "Tōkyō");
text = text.replace(/Kobe/g, "Kōbe");
text = text.replace(/Keiō/g, "Keiō");
text = text.replace(/Saikyo/g, "Saikyō");
text = text.replace(/Chuo/g, "Chūō");
text = text.replace(/Toei Oedo/g, "Toei Ōedo");
text = text.replace(/Odakyu/g, "Odakyū");
text = text.replace(/Hanzomon/g, "Hanzōmon");
text = text.replace(/Tokyu/g, "Tōkyū");
text = text.replace(/Koto/g, "Kōtō");
text = text.replace(/Keiyo/g, "Keiyō");
text = text.replace(/Shonan/g, "Shōnan");
var savestart = txt.selectionStart;
txt.value = s2.substring(0, txt.selectionStart)
+ text
+ s2.substr(txt.selectionEnd);
txt.selectionStart = savestart + text.length;
txt.selectionEnd = savestart + text.length;
}
}
}
$(function ($) {
addAutoMacronButton();
addJapanButton();
customSpecialChars();
});
/*</nowiki></pre>*/