มอดูล:mul-letter

จาก วิกิพจนานุกรม พจนานุกรมเสรี
ไปยังการนำทาง ไปยังการค้นหา
local export = {}
local PAGENAME = mw.title.getCurrentTitle().text

local function getCasing(char, variant)
	
	if not variant then
		variant = "common"
	end
	local casing = require("Module:mul-letter/data")[variant][char]
	if not casing then
		if mw.ustring.len(char) > 1 then
			casing = {mw.ustring.lower(char), mw.ustring.upper(mw.ustring.sub(char, 1, 1)) .. mw.ustring.lower(mw.ustring.sub(char, 2, -1)), mw.ustring.upper(char)}
		else
			casing = {mw.ustring.lower(char), mw.ustring.upper(char), mw.ustring.upper(char)}
		end
	end
	return casing
	
end

function export.show(frame)
	local args = frame:getParent().args
	local head = args["head"] or PAGENAME
	local lang = require("Module:languages").getByCode("mul")
	local scriptCode = args["sc"] or args["script"] or require("Module:Unicode_data").char_to_script(head)
	local script = scriptCode and require("Module:scripts").getByCode(scriptCode) or require("Module:scripts").findBestScript(head, lang)
	local variant = args["var"] or nil
	
	if args.script then
		require("Module:debug").track("mul-letter/script-param")
	end

	local data = {
		lang = lang,
		sc = script,
		pos_category = "ตัวอักษร",
		categories = { "อักขระใน" .. script:getCategoryName() },
		heads = head,
		inflections = {}
	}

	local casing = getCasing(head, variant)
	if casing[1] ~= head then
		table.insert(data.inflections, {label = "อักษรตัวเล็ก", accel = "lowercase", casing[1]})
	end
	if casing[2] ~= head and casing[2] ~= casing[3] then
		table.insert(data.inflections, {label = "อักษรตัวผสม", accel = "titlecase", casing[2]})
	end
	if casing[3] ~= head then
		table.insert(data.inflections, {label = "อักษรตัวใหญ่", accel = "uppercase", casing[3]})
	end

	return require("Module:headword").full_headword(data)

end

return export