Differenze tra le versioni di "Modulo:Headword/templates"

Da Dialetto Metaurense.
Riga 1: Riga 1:
 
local export = {}
 
local export = {}
−
 
−
local lemmas = {
 
−
["abbreviation"] = true,
 
−
["acronym"] = true,
 
−
["adjective"] = true,
 
−
["adposition"] = true,
 
−
["adverb"] = true,
 
−
["affix"] = true,
 
−
["article"] = true,
 
−
["circumfix"] = true,
 
−
["circumposition"] = true,
 
−
["classifier"] = true,
 
−
["cmavo"] = true,
 
−
["cmavo cluster"] = true,
 
−
["cmene"] = true,
 
−
["conjunction"] = true,
 
−
["contraction"] = true,
 
−
["counter"] = true,
 
−
["determiner"] = true,
 
−
["diacritical mark"] = true,
 
−
["fu'ivla"] = true,
 
−
["gismu"] = true,
 
−
["Han tu"] = true,
 
−
["hanzi"] = true,
 
−
["hanja"] = true,
 
−
["idiom"] = true,
 
−
["infix"] = true,
 
−
["interfix"] = true,
 
−
["initialism"] = true,
 
−
["interjection"] = true,
 
−
["kanji"] = true,
 
−
["letter"] = true,
 
−
["ligature"] = true,
 
−
["lujvo"] = true,
 
−
["morpheme"] = true,
 
−
["non-constituent"] = true,
 
−
["noun"] = true,
 
−
["number"] = true,
 
−
["numeral"] = true,
 
−
["particle"] = true,
 
−
["phrase"] = true,
 
−
["postposition"] = true,
 
−
["predicative"] = true,
 
−
["prefix"] = true,
 
−
["preposition"] = true,
 
−
["prepositional phrase"] = true,
 
−
["preverb"] = true,
 
−
["pronoun"] = true,
 
−
["proverb"] = true,
 
−
["proper noun"] = true,
 
−
["punctuation mark"] = true,
 
−
["root"] = true,
 
−
["suffix"] = true,
 
−
["syllable"] = true,
 
−
["symbol"] = true,
 
−
["verb"] = true,
 
−
}
 
−
 
−
local nonlemmas = {
 
−
["active participle"] = true,
 
−
["adjectival participle"] = true,
 
−
["adjective form"] = true,
 
−
["adjective comparative form"] = true,
 
−
["adjective superlative form"] = true,
 
−
["adverb form"] = true,
 
−
["adverb comparative form"] = true,
 
−
["adverb superlative form"] = true,
 
−
["adverbial participle"] = true,
 
−
["agent participle"] = true,
 
−
["article form"] = true,
 
−
["circumfix form"] = true,
 
−
["combined form"] = true,
 
−
["comparative adjective"] = true,
 
−
["comparative adverb"] = true,
 
−
["determiner comparative form"] = true,
 
−
["determiner form"] = true,
 
−
["determiner superlative form"] = true,
 
−
["diminutive noun"] = true,
 
−
["gerund"] = true,
 
−
["infinitive"] = true,
 
−
["jyutping"] = true,
 
−
["kanji reading"] = true,
 
−
["misspelling"] = true,
 
−
["negative participle"] = true,
 
−
["nominal participle"] = true,
 
−
["noun case form"] = true,
 
−
["noun form"] = true,
 
−
["noun plural form"] = true,
 
−
["numeral form"] = true,
 
−
["participle"] = true,
 
−
["participle form"] = true,
 
−
["particle form"] = true,
 
−
["passive participle"] = true,
 
−
["past active participle"] = true,
 
−
["past participle"] = true,
 
−
["past participle form"] = true,
 
−
["past passive participle"] = true,
 
−
["perfect active participle"] = true,
 
−
["perfect passive participle"] = true,
 
−
["pinyin"] = true,
 
−
["plural"] = true,
 
−
["postposition form"] = true,
 
−
["prefix form"] = true,
 
−
["preposition contraction"] = true,
 
−
["preposition form"] = true,
 
−
["prepositional pronoun"] = true,
 
−
["present active participle"] = true,
 
−
["present participle"] = true,
 
−
["present passive participle"] = true,
 
−
["pronoun form"] = true,
 
−
["proper noun form"] = true,
 
−
["rafsi"] = true,
 
−
["romanization"] = true,
 
−
["romaji"] = true,
 
−
["singulative"] = true,
 
−
["suffix form"] = true,
 
−
["superlative adjective"] = true,
 
−
["superlative adverb"] = true,
 
−
["verb form"] = true,
 
−
["verbal noun"] = true,
 
−
}
 
  
 
local invariable = {
 
local invariable = {
Riga 237: Riga 116:
 
 
 
if pos then
 
if pos then
−
if lemmas[pos] or lemmas[pos:gsub("^reconstructed ", "")] then
 
−
table.insert(categories, lang:getCanonicalName() .. " lemmas")
 
−
elseif nonlemmas[pos] or nonlemmas[pos:gsub("^reconstructed ", "")] or lemmas[pos:gsub("^mutated ", "")] or nonlemmas[pos:gsub("^mutated ", "")] then
 
−
table.insert(categories, lang:getCanonicalName() .. " non-lemma forms")
 
−
else
 
−
table.insert(tracking_categories, "head tracking/unrecognized pos")
 
−
end
 
−
 
 
-- Make the plural form of the part of speech
 
-- Make the plural form of the part of speech
 
if pos:find("x$") then
 
if pos:find("x$") then
Riga 253: Riga 124:
 
 
 
table.insert(categories, lang:getCanonicalName() .. " " .. pos .. (cat_sc and " in " .. cat_sc:getCategoryName() or ""))
 
table.insert(categories, lang:getCanonicalName() .. " " .. pos .. (cat_sc and " in " .. cat_sc:getCategoryName() or ""))
−
elseif lang:getCode() ~= "und" then
 
−
table.insert(tracking_categories, "head tracking/no pos")
 
 
end
 
end
 
 

Versione delle 17:42, 27 lug 2014

La documentazione per questo modulo può essere creata in Modulo:Headword/templates/man

local export = {}

local invariable = {
	["cmavo"] = true,
	["cmene"] = true,
	["fu'ivla"] = true,
	["gismu"] = true,
	["Han tu"] = true,
	["hanzi"] = true,
	["hanja"] = true,
	["jyutping"] = true,
	["kanji"] = true,
	["lujvo"] = true,
	["phrasebook"] = true,
	["pinyin"] = true,
	["rafsi"] = true,
	["romaji"] = true,
}

function export.head_t(frame)
	local args = frame:getParent().args
	
	-- Get language and script information
	local lang = args[1] or (mw.title.getCurrentTitle().nsText == "Template" and "und") or error("Language code has not been specified. Please pass parameter 1 to the template.")
	local sc = args["sc"] or ""; if sc == "" then sc = nil end
	local cat_sc = args["cat sc"] or ""; if cat_sc == "" then cat_sc = nil end
	lang = require("Module:languages").getByCode(lang) or error("The language code \"" .. lang .. "\" is not valid.")
	
	if cat_sc then
		cat_sc = (cat_sc and (require("Module:scripts").getByCode(cat_sc) or error("The script code \"" .. cat_sc .. "\" is not valid.")) or nil)
		sc = cat_sc
	else
		sc = (sc and (require("Module:scripts").getByCode(sc) or error("The script code \"" .. sc .. "\" is not valid.")) or nil)
	end
	
	-- Gather basic parameters
	local sort_key = args["sort"]; if sort_key == "" then sort_key = nil end
	local pos = args[2]; if pos == "" then pos = nil end
	local cat2 = args["cat2"]; if cat2 == "" then cat2 = nil end
	local cat3 = args["cat3"]; if cat3 == "" then cat3 = nil end
	local tr = args["tr"]; if tr == "" then tr = nil end
	
	-- Gather headwords
	local head = args["head"]
	local heads = {head or ""}
	local i = 2
	head = args["head" .. i]
	
	while head do
		if head ~= "" then
			table.insert(heads, head)
		end
		
		i = i + 1
		head = args["head" .. i]
	end
	
	-- Gather gender and number specifications
	-- Iterate over all gn parameters (g2, g3 and so on) until one is empty
	local genders = {}
	local g = args["g"]; if g == "" then g = nil end
	local i = 2
	
	while g do
		table.insert(genders, g)
		g = args["g" .. i]; if g == "" then g = nil end
		i = i + 1
	end
	
	-- Gather inflected forms
	local inflections = {}
	
	local i = 1
	local label = args[i * 2 + 1]
	local accel = args["f" .. i .. "accel"]; if accel == "" then accel = nil end
	local nolink = args["f" .. i .. "nolink"]; if nolink == "" then nolink = nil end
	local parts = {label = label, accel = accel, nolink = nolink}
	
	local m_scripts = nil
	
	while label do
		local term = args[i * 2 + 2]; if term == "" then term = nil end
		local alt = args["f" .. i .. "alt"]; if alt == "" then alt = nil end
		local sc = args["f" .. i .. "sc"]; if sc == "" then sc = nil end
		local id = args["f" .. i .. "id"]; if id == "" then id = nil end
		local gender = args["f" .. i .. "g"]; if gender == "" then gender = nil end
		
		if term or alt then
			if sc then
				m_scripts = m_scripts or require("Module:scripts")
				sc = (sc and (m_scripts.getByCode(sc) or error("The script code \"" .. sc .. "\" is not valid.")) or nil)
			end
			
			table.insert(parts, {term = term, alt = alt, sc = sc, id = id, genders = {gender}})
		end
		
		i = i + 1
		label = args[i * 2 + 1]
		accel = args["f" .. i .. "accel"]; if accel == "" then accel = nil end
		nolink = args["f" .. i .. "nolink"]; if nolink == "" then nolink = nil end
		
		-- If the next label is not "or" then insert the previous one and create a new one.
		if label ~= "or" then
			-- Only insert if the previous label is not empty.
			if (parts.label or "") ~= "" then
				table.insert(inflections, parts)
			end
			
			parts = {label = label, accel = accel, nolink = nolink}
		end
	end
	
	-- Get/set categories
	local categories = {}
	local tracking_categories = {}
	
	if pos then
		-- Make the plural form of the part of speech
		if pos:find("x$") then
			pos = pos .. "es"
		elseif not invariable[pos] then
			pos = pos .. "s"
		end
		
		table.insert(categories, lang:getCanonicalName() .. " " .. pos .. (cat_sc and " in " .. cat_sc:getCategoryName() or ""))
	end
	
	if cat2 then
		table.insert(categories, lang:getCanonicalName() .. " " .. cat2)
	end
	
	if cat3 then
		table.insert(categories, lang:getCanonicalName() .. " " .. cat3)
	end
	
	return require("Module:headword").full_headword(lang, sc, heads, tr, genders, inflections, categories, sort_key) ..
		require("Module:utilities").format_categories(tracking_categories, lang, sort_key)
end

return export