Moduuli:Automaattilinkki
Ulkoasu
Moduulin Automaattilinkki käyttöohje [näytä tämä käyttöohje omalla sivullaan] [muokkaa tätä käyttöohjetta] [päivitä] [testit] [hiekkalaatikko]
Tässä ohjeessa kuvataan toiminnallisuutta jonka kehitys on vielä kesken. Sivu on tarkoitettu lähinnä kehityksen apuvälineeksi, ei yleiseen käyttöön. |
EI KÄYTÖSSÄ
Tässä moduulissa on määritelty muunnosfunktioita, jotka muuttavat sanarivillä ja muisssa linkkiteksteissä näytetyt sana automaattisesti sivun nimen muotoon. Kielille, joille on määritelty muunnosfunktio, voidaan sanarivimallineissa antaa pelkkä tarkkeellinen muoto.
Muunnosfunkioita on seuraaville kielille:
- arabia
- heprea
- latina
- serbia
- ukraina
- venäjä
Esim. taivutustaulukoissa:
{{al|la|nucī}}
merkinnän{{l|la|nuci|nucī}}
sijaan
Esim. sanarivimallineissa:
{{substantiivi|ar|vok=أَب|monvok=آبَاء}}
merkinnän{{substantiivi|ar|vok=أَب|mon=آباء|monvok=آبَاء}}
sijaan{{substantiivi|ru|paino=аба́к|monpaino=аба́ки}}
pro{{substantiivi|ru|paino=аба́к|mon=абаки|monpaino=аба́ки}}
{{substantiivi|la|abbās|mon*=abbātēs}}
pro{{substantiivi|la|abbās|mon=abbates|mon*=abbātēs}}
-- akuuttiaksentin poistava funktio
local function yleinenAkuutillinen(sana)
local tarkkeet = {
-- Poistettavat
[0x0301] = true, -- COMBINING ACUTE ACCENT
}
local s = mw.ustring.toNFD(sana)
local out = {}
local i = 1
for codepoint in mw.ustring.gcodepoint( s ) do
if not tarkkeet[codepoint] then
out[i] = codepoint
i = i + 1
end
end
return mw.ustring.toNFC(mw.ustring.char(unpack(out)))
end
--- Taulukko kielikoodeista ja sanan muuttavista funktoista.
local muuntimet = {
["ar"] = function (sana) -- arabia
local tarkkeet = {
-- TODO tarkistettava
-- Poistettavat
[0x064B] = true, -- ARABIC FATHATAN
[0x064C] = true, -- ARABIC DAMMATAN
[0x064D] = true, -- ARABIC KASRATAN
[0x064E] = true, -- ARABIC FATHA
[0x064F] = true, -- ARABIC DAMMA
[0x0650] = true, -- ARABIC KASRA
[0x0651] = true, -- ARABIC SHADDA
[0x0652] = true, -- ARABIC SUKUN
[0x200E] = true, -- LEFT-TO-RIGHT MARK
[0x0670] = true, -- ARABIC LETTER SUPERSCRIPT ALEF
-- Muutettavat
[0x0671] = 0x0627, -- U+0671 ARABIC LETTER ALEF WASLA -> U+0627 ARABIC LETTER ALEF
}
local s = mw.ustring.toNFD(sana)
local out = {}
local i = 1
for codepoint in mw.ustring.gcodepoint( s ) do
if not tarkkeet[codepoint] then
out[i] = codepoint
i = i + 1
elseif type(tarkkeet[codepoint]) == "number" then
out[i] = tarkkeet[codepoint]
i = i + 1
end
end
return mw.ustring.toNFC(mw.ustring.char(unpack(out)))
end,
["he"] = function (sana) -- heprea
local tarkkeet = {
-- TODO tarkistettava
-- Poistettavat
[0x05B0] = true, -- HEBREW POINT SHEVA
[0x05B1] = true, -- HEBREW POINT HATAF SEGOL
[0x05B2] = true, -- HEBREW POINT HATAF PATAH
--[0x05B3] = true, -- HEBREW POINT HATAF QAMATS
[0x05B4] = true, -- HEBREW POINT HIRIQ
[0x05B5] = true, -- HEBREW POINT TSERE
[0x05B6] = true, -- HEBREW POINT SEGOL
[0x05B7] = true, -- HEBREW POINT PATAH
[0x05B8] = true, -- HEBREW POINT QAMATS
[0x05B9] = true, -- HEBREW POINT HOLAM
--[0x05BA] = true, -- HEBREW POINT HOLAM HASER FOR VAV
[0x05BB] = true, -- HEBREW POINT QUBUTS
[0x05BC] = true, -- HEBREW POINT DAGESH OR MAPIQ
[0x05C1] = true, -- HEBREW POINT SHIN DOT
[0x05C2] = true, -- HEBREW POINT SIN DOT
}
local s = mw.ustring.toNFD(sana)
local out = {}
local i = 1
for codepoint in mw.ustring.gcodepoint( s ) do
if not tarkkeet[codepoint] then
out[i] = codepoint
i = i + 1
elseif type(tarkkeet[codepoint]) == "number" then
out[i] = tarkkeet[codepoint]
i = i + 1
end
end
return mw.ustring.toNFC(mw.ustring.char(unpack(out)))
end,
["la"] = function (sana) -- latina
local tarkkeet = {
-- Poistettavat
[0x0304] = true, -- COMBINING MACRON
[0x0306] = true, -- COMBINING BREVE
}
local s = mw.ustring.toNFD(sana)
local out = {}
local i = 1
for codepoint in mw.ustring.gcodepoint( s ) do
if not tarkkeet[codepoint] then
out[i] = codepoint
i = i + 1
end
end
return mw.ustring.toNFC(mw.ustring.char(unpack(out)))
end,
["ru"] = yleinenAkuutillinen, -- venäjä,
["sr"] = function (sana) -- serbia
local tarkkeet = {
0x0300, -- COMBINING GRAVE ACCENT
0x0301, -- COMBINING ACUTE ACCENT
0x0304, -- COMBINING MACRON
0x030F, -- COMBINING DOUBLE GRAVE ACCENT
0x0311, -- COMBINING INVERTED BREVE
}
-- Tarkkeet poistetaan vain, jos ne on alla luetelluissa kirjaimissa.
local muutettavat = {
-- Latinalaiset
["a"] = "a",
["e"] = "e",
["i"] = "i",
["o"] = "o",
["u"] = "u",
["r"] = "r",
-- Kyrilliset
["а"] = "а",
["е"] = "е",
["и"] = "и",
["о"] = "о",
["у"] = "у",
}
local nfc = mw.ustring.toNFD(sana)
local muutettu = mw.ustring.gsub(nfc, "(.)[" .. mw.ustring.char(unpack(tarkkeet)) .. "]", muutettavat)
return mw.ustring.toNFC(muutettu)
end,
["uk"] = yleinenAkuutillinen, -- ukraina,
}
local m = {}
function m.muuta(lang, sana)
local func = muuntimet[lang]
if func then
return func(sana)
end
return sana
end
return m