Module:Kana

From blackwiki
Revision as of 04:52, 18 July 2017 by blackwiki>Mr. Stradivarius (create kana-converting module)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
-- This module converts between Japanese hiragana and katakana

local kanaData = mw.loadData('Module:Kana/data')
local p = {}

local function makeConversionTable(inputKey, outputKey)
	local ret = {}
	for i, charData in ipairs(kanaData) do
		ret[charData[inputKey]] = charData[outputKey]
	end
	return ret
end

local function convertString(s, inputKey, outputKey)
	local conversionTable = makeConversionTable(inputKey, outputKey)
	local ret = mw.ustring.gsub(s, '.', conversionTable)
	return ret
end

local conversionFuncs = {}

function p._htok(s)
	return convertString(s, 'hiragana', 'katakana')
end

function p._ktoh(s)
	return convertString(s, 'katakana', 'hiragana')
end

return setmetatable(p, {
	__index = function (t, key)
		return function (frame)
			local args = require('Module:Arguments').getArgs(frame, {
				wrappers = 'Template:Kana',
			})
			return p['_' .. key](args[1])
		end
	end
})