Jump to content

Module:sinogramme

ⵙⴳ ⵡⵉⴽⵉⵎⴰⵡⴰⵍ

Documentation for this module may be created at Module:sinogramme/doc

local sinogramme = {}

local chaine_regex = "⺀-⿕々-〇ヶ㐀-䶿一-鿿﨎-﨩𠀀-𪜇𪜉-𬻿𬼁-𯿿"
local tableau_radical_trait = {}

local function code_radical_trait(char)
	local code = mw.ustring.codepoint(char)
	local page = math.floor(code / 0x1000)
	local tableau = tableau_radical_trait[page]
	if not tableau then
		tableau = mw.loadData(mw.ustring.format("Module:sinogramme/radical trait %X000", page))
		tableau_radical_trait[page] = tableau
	end
	return tableau[char]
end

function sinogramme.chaine_radical_trait(str)
	str = mw.ustring.gsub(str, "([" .. chaine_regex .. "])", code_radical_trait)
	return str
end

-- Fonctions pour des modèles.
function sinogramme.radical_trait(frame)
	local str = frame.args[1] or ""
	return sinogramme.chaine_radical_trait(str)
end

function sinogramme.regex(frame)
	return chaine_regex
end

return sinogramme