Module:User:kc kennylau/zh-dial-syn

local export = {}

local order = { "Classical", "Formal", "Taxonomic", "Northeastern Mandarin", "Jilu Mandarin", "Jiaoliao Mandarin", "Central Plains Mandarin", "Lanyin Mandarin", "Southwestern Mandarin", "Jianghuai Mandarin", "Mandarin", "Jin", "Wu", "Xiang", "Gan", "Hakka", "Huizhou", "Cantonese", "Southern Pinghua", "Northern Pinghua", "Southern Min", "Puxian Min", "Zhongshan Min", "Eastern Min", "Northern Min", "Central Min", "Shaojiang Min", "Shehua", "Waxiang", "Jiuxing Yumin", "Xiangnan Tuhua", "Yuebei Tuhua" }

local ignore = { }

local ignore_set = {} for _,lect in ipairs(ignore) do ignore_set[lect] = 1 end

function export.generate local d = mw.loadData("Module:zh/data/dial") local max_len = 0 for _,lect in ipairs(d) do		max_len = math.max(max_len, mw.ustring.len(lect.key)) end if max_len%4 > 0 then max_len = max_len+4-max_len%4 -- make it a multiple of 4 end local function make_line(key,val) return '\t["'..key..'"]'..string.rep('\t',math.ceil((max_len-mw.ustring.len(key))/4))..'= '..val..',\n' end local res = ' '.. ''.. 'Auto-generated template for Module:zh/data/dial-syn \n'.. 'local export = {}\n\n'.. 'export.list = {\n'.. make_line('title','""').. make_line('meaning','""').. make_line('note','""').. '\t\n' local groups = {} for _,branch in ipairs(order) do		groups[branch] = "" end for _,lect in ipairs(d) do		if not groups[lect.group] then error("Wrong group for "..lect.key) end if not ignore_set[lect.key] then groups[lect.group] = groups[lect.group] .. make_line(lect.key,'{ "" }') end end for i,branch in ipairs(order) do if i>3 then res = res .. '\t\n' end res = res .. groups[branch] end res = res .. '}\n\nreturn export  ' return res end

function export.show local d = mw.loadData("Module:zh/data/dial") local ds = mw.loadData("Module:zh/data/dial-syn").list local ignore_list = {title=1, meaning=1, note=1} local r1 = "" local d_keys = {} local count1 = 0 local max_len = 0 local longest = "" for _,lect in ipairs(d) do		count1 = count1 + 1 local curr_len = mw.ustring.len(lect.key) if curr_len > max_len then max_len = curr_len longest = "* \n" elseif curr_len == max_len then longest = longest.."* \n" end if not ds[lect.key] and not ignore_set[lect.key] then r1 = r1 .. "* \n" end d_keys[lect.key] = true end local r2 = "" local count2 = 0 for key,_ in pairs(ds) do		if not ignore_list[key] then count2 = count2 + 1 if not d_keys[key] then r2 = r2 .. "* \n" end end end return "This page checks Module:zh/data/dial-syn against Module:zh/data/dial.\n\n".. "Generated by Module:User:kc kennylau/zh-dial-syn.\n\n".. "Also see User:Wpi/zh-dial-list.\n".. "=== Missing keys ===\n".. r1.. "=== Extra keys ===\n".. r2.. "=== Number of lects in Module:zh/data/dial ===\n".. count1.."\n".. "=== Number of lects in Module:zh/data/dial-syn ===\n".. count2.."\n".. "=== Longest lects (length = "..max_len..") ===\n".. longest.. "=== Current order (Hardcoded) ===\n".. table.concat(order," > ").."\n".. "=== Currently ignoring (Hardcoded) ===\n".. table.concat(ignore,", ").."\n".. "=== Correct version ===\n".. export.generate end

return export