Module:IPAc-en/documentation

From Charak Samhita
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

-- 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