ماڈیول:ko-translit

ویکی لغت سے

Module:ko-translit/testcases: 1 test failed. (refresh)

Text Expected Actual Differs at Comments
test:
Failed 달마 دالما dalma 1

local export = {}
local gsub = mw.ustring.gsub
local match = mw.ustring.match

function export.tr(word, lang, sc)
	-- remove hanja
	word = gsub(word, "%([一-鿿㐀-䶿]+%)", "")
	word = gsub(word, "%([一-鿿㐀-䶿]*'''[一-鿿㐀-䶿]+'''[一-鿿㐀-䶿]*%)", "")

	-- transform em-dash to plain hyphen-minus
	word = gsub(word, "—", "-")
	
	if match(word, "^[ㅂㅈㄷㄱㅅㅁㄴㅇㄹㅎㅋㅌㅊㅍㄸㅃㅉㄲㅆㅛㅕㅑㅐㅔㅗㅓㅏㅣㅠㅜㅡㅖㅒ%-]+$") then
		return (gsub(word,
			"[ㅂㅈㄷㄱㅅㅁㄴㅇㄹㅎㅋㅌㅊㅍㄸㅃㅉㄲㅆㅛㅕㅑㅐㅔㅗㅓㅏㅣㅠㅜㅡㅖㅒ]", {
				["ㅂ"] = "ب", ["ㅈ"] = "ج", ["ㄷ"] = "د", ["ㄱ"] = "گ", ["ㅅ"] = "س", 
				["ㅁ"] = "م", ["ㄴ"] = "ن", ["ㅇ"] = "ء", ["ㄹ"] = "ل", ["ㅎ"] = "ہ", 
				["ㅋ"] = "کھ", ["ㅌ"] = "تھ", ["ㅊ"] = "چھ", ["ㅍ"] = "پھ", 
				["ㄸ"] = "تّ", ["ㅃ"] = "پّ", ["ㅉ"] = "جّ", ["ㄲ"] = "کّ", ["ㅆ"] = "سّ", 
				["ㅛ"] = "یو", ["ㅕ"] = "یؤ", ["ㅑ"] = "یا", ["ㅐ"] = "یَیْ", ["ㅔ"] = "یْ", 
				["ㅗ"] = "وْ", ["ㅓ"] = "ؤ", ["ㅏ"] = "ا", ["ㅣ"] = "ی", ["ㅠ"] = "یُو", 
				["ㅜ"] = "ُو", ["ㅡ"] = "ِیُ", ["ㅖ"] = "ییْ", ["ㅒ"] = "یَیْ" }
		))
	end

	if not match(word, "[가-힣]") then
		return nil
	end

	-- transform compat jamo into a form [[Module:ko-pron]] can handle
	-- for [[-ㅂ니까]] [[-ㅁ둥]] etc.
	-- could be moved to [[Module:ko-pron]]
	if match(word, "%-[ㅂㅈㄷㄱㅅㅁㄴㅇㄹㅎㅋㅌㅊㅍㄲㅆ]") then
		word = gsub(word,
			"[ㅂㅈㄷㄱㅅㅁㄴㅇㄹㅎㅋㅌㅊㅍㄲㅆ]", {
				["ㅂ"] = "ᆸ", ["ㅈ"] = "ᆽ", ["ㄷ"] = "ᆮ", ["ㄱ"] = "ᆨ", ["ㅅ"] = "ᆺ", 
				["ㅁ"] = "ᆷ", ["ㄴ"] = "ᆫ", ["ㅇ"] = "ᆼ", ["ㄹ"] = "ᆯ", ["ㅎ"] = "ᇂ", 
				["ㅋ"] = "ᆿ", ["ㅌ"] = "ᇀ", ["ㅊ"] = "ᆾ", ["ㅍ"] = "ᇁ", 
				["ㄲ"] = "ᆩ", ["ㅆ"] = "ᆻ" }
		)
	end
	
	local m_pron = require("Module:ko-pron")
	local revised = m_pron.romanise(word, 2, {}, true)
	
	if not revised then
		return nil
	end
	
	if match(revised, "[%.%?%!]") then
		revised = mw.ustring.upper(mw.ustring.sub(revised, 1, 1)) .. mw.ustring.sub(revised, 2, -1)
		revised = gsub(revised, "([%.%?%!]) ([a-z%'])", "%1 ^%2")
		revised = gsub(revised, "^%'%'%'", "'''^")
	end
	revised = gsub(revised, "%^%'%'%'", "'''^")
	revised = gsub(revised, "%^%l", mw.ustring.upper)
	revised = gsub(revised, '%^', '')
	revised = gsub(revised, "%-'''%-", "'''-")
	revised = gsub(revised, "%-%-", "-")
	
	return revised
end

export.tr_revised = export.tr

return export