User:Mike Dillon/Scripts/ancientGreekSortKey.js
< User:Mike Dillon | Scripts
Note: You may have to bypass your browser’s cache to see the changes. In addition, after saving a sitewide CSS file such as MediaWiki:Common.css, it will take 5-10 minutes before the changes take effect, even if you clear your cache.
- Mozilla / Firefox / Safari: hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (Command-R on a Macintosh);
- Konqueror and Chrome: click Reload or press F5;
- Opera: clear the cache in Tools → Preferences;
- Internet Explorer: hold Ctrl while clicking Refresh, or press Ctrl-F5.
- This script lacks a documentation subpage. Please create it.
- Useful links: root page • root page’s subpages • links • redirects • your own
function createAncientGreekSortKey(input, maintainCase) {
if (!input) return input;
var map = {
'α': /[ἀἁἂἃἄἅἆἇὰάᾰᾱᾶ]/g,
'Α': /[ἈἉἊἋἌἍἎἏᾸᾹᾺΆ]/g,
'ε': /[ἐἑἒἓἔἕὲέ]/g,
'Ε': /[ἘἙἚἛἜἝῈΈ]/g,
'η': /[ἠἡἢἣἤἥἦἧὴήῆ]/g,
'Η': /[ἨἩἪἫἬἭἮἯῊΉ]/g,
'ι': /[ἰἱἲἳἴἵἶἷὶίῐῑῒΐῖῗι]/g,
'Ι': /[ἸἹἺἻἼἽἾἿῘῙῚΊΪ]/g,
'ο': /[ὀὁὂὃὄὅὸό]/g,
'Ο': /[ὈὉὊὋὌὍῸΌ]/g,
'υ': /[ὐὑὒὓὔὕὖὗὺύῠῡῢΰῦῧ]/g,
'Υ': /[ὙὛὝὟῨῩῪΎΫ]/g,
'ω': /[ὠὡὢὣὤὥὦὧὼώῶ]/g,
'Ω': /[ὨὩὪὫὬὭὮὯῺΏ]/g,
'ρ': /[ῥῤ]/g,
'Ρ': /[Ῥ]/g,
/* 'σ': /ς/g, */
'αι': /[ᾀᾁᾂᾃᾄᾅᾆᾇᾲᾳᾴᾷ]/g,
'Αι': /[ᾈᾉᾊᾋᾌᾍᾎᾏᾼ]/g,
'ηι': /[ᾐᾑᾒᾓᾔᾕᾖᾗῂῃῄῇ]/g,
'Ηι': /[ᾘᾙᾚᾛᾜᾝᾞᾟῌ]/g,
'ωι': /[ᾠᾡᾢᾣᾤᾥᾦᾧῲῳῴῷ]/g,
'Ωι': /[ᾨᾩᾪᾫᾬᾭᾮᾯῼ]/g,
'': /´῾`΅῭῟῞῝῏῎῍῁῀᾿᾽/g
};
var output = input;
if (!maintainCase) output = output.toLowerCase();
for (var k in map) {
output = output.replace(map[k], k);
}
return output;
}
// Only add onload hook if the page name contains at least one Greek character
if ((wgAction == "edit" || wgAction == "submit")
&& wgPageName.match(/[\u0370-\u03E1\u03F0-\u03FF\u1F00-\u1FFF]/)) {
addOnloadHook(function () {
// Case sensitive
var li = mw.util.addPortletLink('p-tb', '#',
'Greek sort key',
't-grc-sort',
'Create Ancient Greek sort key from page title');
li.getElementsByTagName("a")[0].onclick = function () {
insertTags(createAncientGreekSortKey(wgPageName), '', '');
return false;
};
// Case sensitive
var li = mw.util.addPortletLink('p-tb', '#',
'Greek sort key (case-sensitive)',
't-grc-sort-nofold',
'Create Ancient Greek sort key from page title (maintain case)');
li.getElementsByTagName("a")[0].onclick = function () {
insertTags(createAncientGreekSortKey(wgPageName, true), '', '');
return false;
};
});
}