Module:IPAc-en/documentation

From Charak Samhita
Jump to navigation Jump to search

-- 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('%s', 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 = {'Code', 'Aliases'} 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, {'Output'}, function (t) return t.text end) end

function p.phonemes() return makeCodeTable( phonemeData, {'Display text', 'Tooltip', 'Type'}, function (t) return t.label, t.tooltip or , t.tooltip and 'diaphoneme' or 'separator' end ) end

return p