コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

モジュール:IPAc-en/documentation

モジュールの解説[表示] [編集] [履歴] [キャッシュを破棄]

モジュール:IPAc-enおよびそのサブモジュールの解説文を自動生成するモジュール。

-- This module generates automatic documentation for [[Template:IPAc-en]].

local pronunciationData = mw.loadData('Module:IPAc-en/pronunciation')
local phonemeData = mw.loadData('Module:IPAc-en/phonemes')
local p = {}

local function makeCode(s)
	return string.format('<code>%s</code>', mw.text.nowiki(s))
end

local function buildTable(options)
	local ret = {}
	ret[#ret + 1] = '{| class="wikitable"'
	if options.headerRow then
		for i, header in ipairs(options.headerRow) do
			ret[#ret + 1] = '! ' .. header
		end
	end
	if options.rows then
		for i, t in ipairs(options.rows) do
			ret[#ret + 1] = '|-'
			for j, data in ipairs(t) do
				ret[#ret + 1] = '| ' .. data
			end
		end
	end
	ret[#ret + 1] = '|}'
	return table.concat(ret, '\n')
end

local function makeCodeTable(data, headers, callback)
	local headerRow = {'記号', 'エイリアス(別称)'}
	for i, header in ipairs(headers) do
		headerRow[#headerRow + 1] = header
	end
	local rows = {}
	for i, t in ipairs(data) do
		local aliases = {}
		if t.aliases then
			for i, alias in ipairs(t.aliases) do
				aliases[#aliases + 1] = makeCode(alias)
			end
		end
		aliases = table.concat(aliases, ', ')
		rows[#rows + 1] = {makeCode(t.code), aliases, callback(t)}
	end
	return buildTable{
		headerRow = headerRow,
		rows = rows
	}
end

function p.pronunciation()
	return makeCodeTable(pronunciationData, {'表示'}, function (t)
		return t.text
	end)
end

function p.phonemes()
	return makeCodeTable(
		phonemeData,
		{'表示', 'ツールチップ', '種類'},
		function (t)
			return t.label, t.tooltip or '', t.tooltip and '類音' or '区切り文字'
		end
	)
end

return p