User:Alex brollo bis/diacritici.js
Jump to navigation
Jump to search
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
(function (mw, $) {
/*************** funzioni specifiche per diacritici **************/
// range combining: 768-879 (0x0300-0x036f)
// Crea un contenitore contenitore draggabile
// attuali dipendenze: mw.alex.getSelection(), mw.alex.writeSelection(),mw.alex.activeElement
function apply(span) {
var curDiac = $(span).text().normalize("NFD");
var t = mw.alex.getSelection();
var n, car;
if (curDiac.length === 3) {curDiac = curDiac.substring(1, 2); } else {curDiac = ""; }
// ricerca all'indietro del primo carattere non combining
if ($(".diacritici span").eq(0).text() === "REP ") {
n = 1;
while (t[0].codePointAt(t[0].length - n) >= 768 && t[0].codePointAt(t[0].length - n) < 879) {n += 1; }
car = t[0].substring(t[0].length - n, t[0].length).normalize("NFD");
if (car.length > 1) {car = car.substring(0, 1); }
car = (car + curDiac).normalize("NFC");
t[0] = t[0].substring(0, t[0].length - n) + car;
mw.alex.writeSelection(t);
} else {
t[0] += curDiac;
mw.alex.writeSelection(t);
}
}
// CODICE IN ESECUZIONE
var diac = $("<div>")
.attr("class", "diacritici")
.css({"font-family" : "Arial Unicode MS",
"display" : "none",
"font-size" : "140%",
"line-height" : "1",
"width" : "10em",
"position" : "fixed",
"border" : "3px solid black",
"min-width" : "50px",
"min-height" : "20px",
"top" : "50px",
"left" : "50px",
"background-color" : "rgb(230, 255, 230)",
"z-index" : "1000"})
.appendTo($("#content"));
// diac.draggable().resizable();
var spanSelector = $("<span>").text("REP ").css("font-size", "1pc").click(function () {
if ($(this).text() === "ADD ") {
$(this).text("REP ").css("color", "red");
} else {
$(this).text("ADD ").css("color", "green");
}
});
var closeButton = $("<span>").text("CLOSE ").css("font-size", "1pc").click(function () {
$(".diacritici").toggle();
});
// costruzione caratteri con diacritico
// elenco diacritici separati da |
var i;
var diacritici = ("\u25cc|\u25cc\u0300|\u25cc\u0301|\u25cc\u0302|\u25cc\u0303|\u25cc\u0304|\u25cc\u0305|\u25cc\u0306|\u25cc\u0307|\u25cc\u0308|\u25cc\u0309|\u25cc\u030a|\u25cc\u030b|\u25cc\u030c|\u25cc\u030d|\u25cc\u0311|\u25cc\u0312|\u25cc\u0313|\u25cc\u0314|\u25cc\u0320|\u25cc\u0323|\u25cc\u0324|\u25cc\u0326|\u25cc\u0327|\u25cc\u0330|\u25cc\u0331|\u25cc\u0335|\u25cc\u0345").normalize("NFC").split("|");
// ogni diacritico viene inserito in uno span e al click viene collegata una funzione di scambio diacritico
for (i = 0; i < diacritici.length; i += 1) {
diac.append($("<span>").text(diacritici[i] + " ")); // chiusura funzione click
} // chiusura for
//$("#newtattoo").css("position", "").appendTo($(".diacritici"));
$(".diacritici span").click(function () { apply(this); });
spanSelector.insertBefore($(".diacritici span").eq(0));
closeButton.insertAfter($(".diacritici span").eq(0));
$("<br>").insertAfter($(".diacritici span").eq(1));
}(mw, jQuery));