Module:User:ND381/sinosphere-dial-syn

Hello, you have come here looking for the meaning of the word Module:User:ND381/sinosphere-dial-syn. In DICTIOUS you will not only get to know all the dictionary meanings for the word Module:User:ND381/sinosphere-dial-syn, but we will also tell you about its etymology, its characteristics and you will know how to say Module:User:ND381/sinosphere-dial-syn in singular and plural. Everything you need to know about the word Module:User:ND381/sinosphere-dial-syn you have here. The definition of the word Module:User:ND381/sinosphere-dial-syn will help you to be more precise and correct when speaking or writing your texts. Knowing the definition ofModule:User:ND381/sinosphere-dial-syn, as well as those of other words, enriches your vocabulary and provides you with more and better linguistic resources.


local export = {}
local m_links = require("Module:links")
local zh = require("Module:languages").getByCode("zh")

local variety_list = {
	"Classical", "Formal", "Taxonomic", 
	"Mandarin", "Cantonese", "Gan", "Hakka", "Huizhou", "Jin", "Jiuxing Yumin",
	"Min Bei", "Min Dong", "Min Nan", "Puxian Min", "Min Zhong", "Shaojiang Min", "Zhongshan Min",
	"Southern Pinghua", "Northern Pinghua", "Shehua", "Waxiang", "Wu", "Xiang"
}

local variety_colour = {
			= "FAF0F2",
				= "FAF0F2",
			= "FAF0F2",
			= "FAF5F0",
			= "F0F5FA",
					= "FFF3E4",
				= "E2FFE1",
				= "E3EFB5",
					= "F0F5FA",
		= "F0F0F0",
				= "F7FAF0",
			= "F7FAF0",
				= "F7FAF0",
			= "F7FAF0",
			= "F7FAF0",
		= "F7FAF0",
		= "F7FAF0",
	= "E3E6F4",
	= "E3E6F4",
				= "F0F0F0",
				= "F0F0F0",
					= "F8F4D2",
				= "F9F0FA",
				= "F0E8EE",
				= "DDF1EC",
			= "F1DDE3",
				= "EEFBFF",
}

local special_note = {
	 = "]",
	 = "Formal <small>(])</small>",
	 = "Taxonomic name",
}

function export.main(frame)
	local args = frame:getParent().args
	local pagename = mw.title.getCurrentTitle().text
	local target_page = args or pagename
	local resource_page = "Module:User:ND381/sinosphere-dialsyn/" .. target_page
	local variety_data = mw.loadData("Module:User:ND381/sinosphere-dial-data")
	local m_syndata
	if mw.title.new(resource_page).exists then
		m_syndata = require(resource_page).list
	else
		return frame:expandTemplate{ title = "Template:zh-dial/uncreated", args = { target_page } }
	end
	
	local ordered_list = {}
	
	--allow alternative title linking for sum-of-parts tables
	local title = m_syndata or ""
	if title == "" then
		title = target_page
	end
	m_syndata = nil
	
	local main_title = m_links.full_link( { term = mw.ustring.gsub(title, "", ""), lang = zh } )
	
	local syn_table = { [=[
	<div class="NavFrame" style="border:0px; max-width: 40em; text-align:center;"><div class="NavHead" style="font-size:105%; border:1px solid #aaaaaa; margin-left:-1px; background-color:#CCCCFF; text-align:center;" cellpadding="3">Dialectal synonyms of ]=] ..
		main_title .. ' (“' .. m_syndata .. '”) ' ..
		"]\n' .. [=[</div><div class="NavContent"> 
	{| class="wikitable" style="margin:0; text-align:center; width: 100%"
	|-
	! style="background:#E8ECFA" | Variety
	! style="background:#E8ECFA" | Location
	! style="background:#E8ECFA" | Words]=] .. [=[
	<div style="float: right; clear: right; font-size:60%"><span class="plainlinks">=] ..
		tostring(mw.uri.fullUrl("Module:zh/data/dial-syn/" .. target_page, {  = "edit" })) ..
	' edit]</span></div>' }
	
	m_syndata = nil
	if m_syndata then
		note = m_syndata
		m_syndata = nil
	end
	if m_syndata == "" then
		m_syndata = { target_page }
	elseif m_syndata == "-" then
		m_syndata = nil
	end

	local variety_count = {}
	for i, v in pairs(variety_list) do
		variety_count = 0
	end	
	
	for location, synonym_set in pairs(m_syndata) do
		if synonym_set ~= "" then
			local formatted_synonyms = {}
			for i, synonym in ipairs(synonym_set) do
				local synonym_note = mw.text.split(synonym, ":")
				local synonym_etym = mw.text.split(synonym_note, "_")
				local syn, etym, note = synonym_etym, synonym_etym, synonym_note
				local synonym_link = m_links.full_link( {
						term = syn .. (etym and string.format("#Etymology %s", etym) or ""),
						alt = etym and (syn .. string.format("<sub>%s</sub>", etym)),
						lang = zh
					} )
				note = note and ' <span style="font-size:60%"><i>' .. note .. '</i></span>' or ""
				table.insert(formatted_synonyms, synonym_link .. note)
			end
			local location_data = variety_data or error("No data for the location " .. location .. "!")
			local location_name = mw.ustring.gsub(location_data.english or location, "(%(.*%))", "<small>%1</small>")
			local location_link = location_data.link or location_name
			local variety = location_data.group
			variety_count = variety_count + 1
			ordered_list = { variety, location_name, location_link, formatted_synonyms }
			
		end
	end
	
	local current_variety = ''
	local colour = ''
	
	-- do not use `for _, point_data in ordered_list do`
	-- as there are gaps in ordered_list
	-- the order number should be between 1-9999 otherwise it won't show
	-- 9999 dialect points should be sufficient
	for i=1,9999 do
		if ordered_list then
			local point_data = ordered_list --if some time in the future we have a lot of point_data then move this line before the if
			local variety = point_data
			table.insert(syn_table, "\n|-")
			if variety ~= current_variety then
				current_variety = variety
				colour = variety_colour
				
				table.insert(syn_table, "\n!rowspan=" .. variety_count .. (special_note and " colspan=2" or "") .. 
				' style="background:#' .. colour .. '"| ' .. (special_note or variety))
			end
			table.insert(syn_table, ((point_data and not special_note) and ('\n|style="background:#' .. colour .. '"| ' .. 
				' .. '|' .. point_data .. ']]') or '') ..
				'\n|style="background:#' .. colour .. '"| ' ..
				table.concat(point_data, ", "))
			
		end
	end

	if note and note ~= "" then
		table.insert(syn_table, '\n|-\n! style="background:#FFF7FB; padding-top:5px; padding-bottom: 5px" | ' ..
			"<small>Note</small>\n| colspan=2|<small><i>" .. note .. "</i></small>")
	end
	
	table.insert(syn_table, '\n|}</div></div>')
	
	return table.concat(syn_table, "")
end

return export