Moduł:Superjurek/transliteracja/PL-CYR

Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:Superjurek/transliteracja/PL-CYR/opis

--Ten moduł służy Superjurkowi do ćwiczenia czytania polskiej cyrylicy.
local p = {}

local errcat = '[[Kategoria:Błąd w transliteracji]]'

local commonTransliteration = {
    ["-"] = "-",
    ["–"] = "–",
    ["—"] = "—",
    ["="] = "=",
    [","] = ",",
    ["."] = ".",
    ["/"] = "/",
    [";"] = ";",
    ["'"] = "'",
    ["["] = "[",
    ["]"] = "]",
    ["\\"] = "\\",
    ["`"] = "`",
    ["~"] = "~",
    ["!"] = "!",
    ["@"] = "@",
    ["#"] = "#",
    ["$"] = "$",
    ["%"] = "%",
    ["^"] = "^",
    ["&"] = "&",
    ["*"] = "*",
    ["("] = "(",
    [")"] = ")",
    ["_"] = "_",
    ["+"] = "+",
    ["{"] = "{",
    ["}"] = "}",
    ["|"] = "|",
    [":"] = ":",
    ["\""] = "\"",
    ["<"] = "<",
    [">"] = ">",
    ["?"] = "?" ,
    [" "] = " "
}

local transliterationCyr = {
	["P"] = {
		["S"  ] = "Ѱ",
		["s"  ] = "Ѱ",
		[false] = "П"},
	["p"] = {
		["s"  ] = "ѱ",
		[false] = "п"},
	["K"] = {
		["S"  ] = "Ѯ",
		["s"  ] = "Ѯ",
		[false] = "К"},
	["k"] = {
		["s"  ] = "ѯ",
		[false] = "к"},
	["X"] = "Ѯ",
	["x"] = "ѯ",
	["S"] = {
		["Z"  ] = {
			["CZ" ] = "Щ",
			[false] = "Ш"},
		["z"  ] = {
			["cz"  ] ="Щ",
			[false] = "Ш"},
		[false] = "С"},
	["s"] = {
		["z"  ] = {
			["cz"  ] ="щ",
			[false] = "ш"},
		[false] = "с"},
	["D"] = {
		["Z"  ] = "Ѕ",
		["z"  ] = "Ѕ",
		["Ź"  ] = "Ђ",
		["ź"  ] = "Ђ",
		["Ż"  ] = "Џ",
		["ż"  ] = "Џ",
		[false] = "Д"},
	["d"] = {
		["z"  ] = "ѕ",
		["ź"  ] = "ђ",
		["ż"  ] = "џ",
		[false] = "д"},
	["C"] = {
		["Z"  ] = "Ч",
		["z"  ] = "Ч",
		["H"  ] = "Х",
		["h"  ] = "Х",
		[false] = "Ц"},
	["c"] = {
		["z"  ] = "ч",
		["h"  ] = "х",
		[false] = "ц"},
	["R"] = {
		["Z"  ] = "̌Р",
		["z"  ] = "̌Р",
		[false] = "Р"},
	["r"] = {
		["z"  ] = "̌р",
		[false] = "р"},
	["I"] = {
		["A"  ] = "Я",
		["a"  ] = "Я",
		["Ą"  ] = "Ѭ",
		["ą"  ] = "Ѭ",
		["E"  ] = "Є",
		["e"  ] = "Є",
		["Ę"  ] = "Ѩ",
		["ę"  ] = "Ѩ",
		["O"  ] = "Ё",
		["o"  ] = "Ё",
		["U"  ] = "Ю",
		["u"  ] = "Ю",
		[false] = "И"},
	["i"] = {
		["a"  ] = "я",
		["ą"  ] = "ѭ",
		["e"  ] = "є",
		["ę"  ] = "ѩ",
		["o"  ] = "ё",
		["u"  ] = "ю",
		[false] = "и"},
	["J"] = {
		["A"  ] = "Я",
		["a"  ] = "Я",
		["Ą"  ] = "Ѭ",
		["ą"  ] = "Ѭ",
		["E"  ] = "Є",
		["e"  ] = "Є",
		["Ę"  ] = "Ѩ",
		["ę"  ] = "Ѩ",
		["O"  ] = "Ё",
		["o"  ] = "Ё",
		["U"  ] = "Ю",
		["u"  ] = "Ю",
		[false] = "Й"},
	["j"] = {
		["a"  ] = "я",
		["ą"  ] = "ѭ",
		["e"  ] = "є",
		["ę"  ] = "ѩ",
		["o"  ] = "ё",
		["u"  ] = "ю",
		[false] = "й"},
	
	["A"] = "А",
	["a"] = "а",
	["Ą"] = "Ѫ",
	["ą"] = "ѫ",
	["B"] = "Б",
	["b"] = "б",
	["Ć"] = "Ћ",
	["ć"] = "ћ",
	["Е"] = "E",
	["e"] = "е",
	["Ę"] = "Ѧ",
	["ę"] = "ѧ",
	["F"] = "Ф",
	["f"] = "ф",
	["G"] = "Г",
	["g"] = "г",
	["H"] = "Ҳ",
	["h"] = "ҳ",
	["I"] = "И",
	["i"] = "и",
	["J"] = "Й",
	["j"] = "й",
	["K"] = "К",
	["k"] = "к",
	["L"] = "Љ",
	["l"] = "љ",
	["Ł"] = "Л",
	["ł"] = "л",
	["M"] = "М",
	["m"] = "м",
	["N"] = "Н",
	["n"] = "н",
	["Ń"] = "Њ",
	["ń"] = "њ",
	["O"] = "О",
	["o"] = "о",
	["Ó"] = "Ѻ",
	["ó"] = "ѻ",
	["S"] = "С",
	["s"] = "с",
	["Ś"] = "Ҫ",
	["ś"] = "ҫ",
	["T"] = "Т",
	["t"] = "т",
	["U"] = "У",
	["u"] = "у",
	["W"] = "В",
	["w"] = "в",
	["Y"] = "Ы",
	["y"] = "ы",
	["Z"] = "З",
	["z"] = "з",
	["Ź"] = "Ҙ",
	["ź"] = "ҙ",
	["Ż"] = "Ж",
	["ż"] = "ж",
}
local transliterations = {
	["cyr"] = transliterationCyr
}

local function sanitizeText( text )
    local result = text
    result = string.gsub( result, "&#39;", "'" )
    result = string.gsub( result, "&quot;", "\"" )
    result = string.gsub( result, "&amp;", "&" )
    return result
end



function p.transliterate( frame )
        local language = frame.args[1]
        local text = sanitizeText( frame.args[2] )
        local transliteration = transliterations[ language ]
        
        if transliteration == nil then
            return "Błędny kod języka: " .. language end
        
        for codepoint in mw.ustring.gcodepoint( text ) do
            local untransliterated = mw.ustring.char( codepoint )
            local transliterated = commonTransliteration[ untransliterated ]
            
            if transliterated == nil then
                transliterated = transliteration[ untransliterated ]

            result = transliterated
                       table.concat(result, '')
            end

     return result
       
end end
return p


--jeszcze nie skończyłem pisać, zrobię to później