Module:Sandbox/Nardog/8d explained

local data = mw.loadData('Module:Sandbox/Nardog/8t')local univPatterns, keyPatterns = data.data.univPatterns, data.data.keyPatternsdata = data.rawData

local p =

local match = mw.ustring.matchlocal nowiki = mw.text.nowiki

function p.main local ret, count, sCount =,, -- Error detection do local symbols, dupes, invChars =,, local function checkSubs(t, s, name) for _, v in ipairs(t) do local matched = match(s, v.pat) if matched then table.insert(invChars,) end end end local function check(s, checkKeyPats) sCount[s] = 0 for i, v in ipairs(data[s]) do for _, symbol in ipairs(v.symbols) do if symbols[symbol] then table.insert(dupes, symbol) else symbols[symbol] = true end checkSubs(univPatterns, symbol, v.name) if checkKeyPats then checkSubs(keyPatterns, symbol, v.name) end sCount[s] = sCount[s] + 1 end count[s] = i end end check('sounds', true) check('diacritics') if dupes[1] or invChars[1] then for _, v in ipairs(dupes) do table.insert(ret, string.format('*Error: "

%s" is defined more than once.\n', nowiki(v))) end for _, v in ipairs(invChars) do table.insert(ret, string.format('*Error: A symbol for "%s" uses "%s", which will be replaced by "%s".\n', v[1], nowiki(v[2]), nowiki(v[3]))) end else table.insert(ret, 'No errors were found. ') end end table.insert(ret, string.format('%s entries (%s in "sounds", %s in "diacritics"), %s symbols (%s in "sounds", %s in "diacritics").\n\n', count.sounds + count.diacritics, count.sounds, count.diacritics, sCount.sounds + sCount.diacritics, sCount.sounds, sCount.diacritics)) table.insert(ret, 'Parentheses denote a link automatically inherited from the name field. In italics are redirects.\n') -- Table table.insert(ret, '
NameSymbolsArticleAudioGroup\n') local function renderRows(s) for _, v in ipairs(data[s]) do local parenL = v.article and or '(' local parenR = v.article and or ')' local article = v.article or v.name local symbols = for j, w in ipairs(v.symbols) do symbols[j] = nowiki(w) end local obj = mw.title.new(article) local italics = obj.isRedirect and "" or local audio = v.audio and string.format('%s (play)', v.audio, v.audio, v.audio) or table.insert(ret, string.format('-\n%s%s%s%s%s%s%s%s%s\n', v.name, table.concat(symbols, ' , '), parenL, italics, article, italics, parenR, audio, s)) end end renderRows('sounds') renderRows('diacritics') table.insert(ret, '
') return table.concat(ret)end

return p