Mòdulu:sizzioni
La ducumintazzioni di stu mòdulu si pò criari nta Mòdulu:sizzioni/doc
b = require('Mòdulu:basi')
tip = require('Mòdulu:tipi di palori')
lang = require('Mòdulu:lingui')
sizz = require('Mòdulu:sizzioni vuci')
lucu = require('Mòdulu:lucuzzioni')
lem = require('Mòdulu:lemma')
local p = {}
local cunv_auturizza = {
['noma scintìfici'] = true,
['numirali'] = true,
}
local link_aiutu_sizzioni = " [[Wikizziunariu:Lista dî sizzioni|<span style=\"color:red;font-size:70%\">(sizzioni scanusciuta)</span>]]"
local link_aiutu_tipu = " [[Wikizziunariu:Tipi di palori|<span style=\"color:red;font-size:70%\">(sizzioni scanusciuta)</span>]]"
local link_aiutu_lingua = " [[Wikizziunariu:Lista dî lingui|<span style=\"color:red;font-size:70%\">(sizzioni scanusciuta)</span>]]"
local link_aiutu_nummiru = " <span style=\"color:red;font-size:70%\">(nùmmiru nun bonu)</span>"
catigurii = {}
errura = {}
local isdebug = false
local show_ancora = false
function _agghiunci_catiguria(palora_cat, ciavi, scritt)
local testu_catiguria = ''
if isdebug then
if ciavi then
testu_catiguria = b.fa_catiguria(palora_cat, nil, true) .. '(' .. ciavi .. ')'
else
testu_catiguria = b.fa_catiguria(palora_cat, nil, true)
end
else
testu_catiguria = b.fa_catiguria_cuntinutu(palora_cat, ciavi, scritt)
end
table.insert(catigurii, testu_catiguria)
end
function _agghiunci_erruri(missaggiu)
if missaggiu ~= nil and missaggiu ~= '' then
table.insert(errura, missaggiu)
end
end
function _check_num(num)
num = tonumber(num)
if num == nil then return false end
if num ~= math.floor(num) then return false end
if num > 0 then
return true
end
return false
end
function _fa_titulu(typen, furm, luc, num)
local nomu = tip.get_nomu_singulari(typen, luc, furm)
if nomu == nil then
local nomu_luc = tip.get_nomu_singulari(typen, true, furm)
if not luc and nomu_luc ~= nil then
nomu = nomu_luc
_agghiunci_catiguria("Wikizziunariu:Lucuzzioni senza spazziu", typen)
end
end
local numtext = ''
if num then
if _check_num(num) then
numtext = ' ' .. num
else
_agghiunci_erruri(link_aiutu_nummiru)
_agghiunci_catiguria("Wikizziunariu:Nùmmira di sizzioni nun boni", num)
end
end
if (typen) then
if nomu then
return b.ucfirst(nomu) .. numtext
else
_agghiunci_erruri(link_aiutu_tipu)
_agghiunci_catiguria('Wikizziunariu:Sizzioni cu tìtulu scanusciutu', typen)
return numtext
end
else
_agghiunci_erruri(link_aiutu_tipu)
_agghiunci_catiguria('Wikizziunariu:Sizzioni senza tìtulu')
return 'Sizzioni senza tìtulu'
end
end
function _fa_ancora(articulu, lang, typen, furm, luc, num)
local abrev = tip.get_abrev(typen, luc, furm)
local ancora = ''
if (lang and abrev) then
ancora = lang .. '-' .. abrev
num = num or 1
if num then
if _check_num(num) then
ancora = ancora .. '-' .. num
end
end
end
return ancora
end
local modulu_sinugramma
function _fa_catiguria(codici_lang, typen, furm, luc, ciavi, geniri, titulu)
if not b.paggina_di_cuntinutu then return '' end
lemma_cat = lem.cat_lemma(codici_lang, typen, furm, luc)
if lemma_cat then
_agghiunci_catiguria(lemma_cat, ciavi)
end
local nomu = tip.get_nomu_plurali(typen, luc, furm)
if nomu == 'noma' and geniri ~= nil then
if geniri == 'm' then
nomu = nomu .. ' maschili'
elseif geniri == 'f' then
nomu = nomu .. ' fimminili'
elseif geniri == 'mf' then
nomu = nomu .. ' ambigèniri'
else
_agghiunci_catiguria('Wikizziunariu:Sizzioni du nomu cu geniri nun vàliddu', geniri)
end
end
local lingua = lang.get_nomu(codici_lang)
if nomu and lingua then
local palora_cat = ''
if codici_lang == 'cunv' then
if cunv_auturizza[nomu] ~= nil then
palora_cat = b.ucfirst(nomu)
else
palora_cat = b.ucfirst(nomu) .. ' n ' .. lingua
end
else
palora_cat = b.ucfirst(nomu) .. ' n ' .. lingua
end
if ciavi ~= nil and ciavi ~= '' then
_agghiunci_catiguria(lingua, ciavi)
end
if nomu == 'sinugrammi' then
if not modulu_sinugramma then
modulu_sinugramma = require('Mòdulu:sinugrammi')
end
ciavi = modulu_sinugramma.catina_radicali_trattu(titulu)
end
_agghiunci_catiguria(palora_cat, ciavi)
else
if nomu then
_agghiunci_erruri(link_aiutu_lingua)
if codici_lang ~= nil and codici_lang ~= '' then
_agghiunci_catiguria('Wikizziunariu:Sizzioni di tìtulu cu lingua scanusciuta', nomu)
else
_agghiunci_catiguria('Wikizziunariu:Sizzioni di tìtulu senza lingua nziruta', nomu)
end
end
end
end
function p.vuci(frame)
local args = frame:getParent().args
local argsnum = b.trim_paramitri(args)
local articulu = mw.title.getCurrentTitle()
local typen = argsnum[1]
local lang = argsnum[2]
local ciavi = args['ciavi']
local erruri_cat = ''
if typen == 'sustantivu' and lang == 'cunv' then
typen = 'nomu scientifique'
end
local furm = false
if argsnum[3] then
if argsnum[3]=='forma' then
furm=true
else
_agghiunci_catiguria('Wikizziunariu:Sizzioni di tipu cu paràmitru 3 nun vàliddu')
end
end
local luc = lucu.is_lucuzzioni(args, articulu, lang)
local num = args.num
if tip.is_alias(typen) then
_agghiunci_catiguria('Wikizziunariu:Sizzioni di tipu di palora usanti n’alias', typen)
end
if (args['nocat'] or '') == '' then
_fa_catiguria(lang, typen, furm, luc, ciavi, args['geniri'], articulu.text)
end
local testu_titulu = _fa_titulu(typen, furm, luc, num)
local ancora = _fa_ancora(articulu, lang, typen, furm, luc, num)
local final = '<span class="tituludif" id="' .. ancora .. '">' .. testu_titulu .. '</span>'
if num == nil or tonumber(num) == 1 then
local ancora_default = mw.ustring.gsub(ancora, '-1$', '')
local ancora_default_span = '<span id="' .. ancora_default .. '" style="font-size:0;"> </span>'
final = final .. ancora_default_span
end
if show_ancora then final = final .. ' ' .. ancora end
return final
end
function p.sizzioni_autru(frame)
local args = frame:getParent().args
local argsnum = b.trim_paramitri(args)
local titulu = argsnum[1]
local authorized_category = {['omufòni'] = true, ['omuf'] = true, ['traduzzioni d’ordinari'] = true, ['trad-ordinari'] = true}
if authorized_category[titulu] ~= nil then
if argsnum[2] then
local lingua = lang.get_nomu(argsnum[2])
_agghiunci_catiguria(sizz.get_category(titulu) .. ' n ' .. lingua)
else
_agghiunci_catiguria(sizz.get_category(titulu))
end
elseif argsnum[2] then
_agghiunci_catiguria('Wikizziunariu:Sizzioni cu paràmitri superflui', titulu)
end
if sizz.is_alias(titulu) then
local ignore_alias = {['trad-ordinari'] = true, ['varianti ortugràfichi'] = true, ['talìa'] = true}
if ignore_alias[titulu] == nil then
_agghiunci_catiguria('Wikizziunariu:Sizzioni usanti n’alias', titulu)
end
end
local testu_titulu = titulu and b.ucfirst(sizz.get_nomu_sizzioni(titulu)) or "Senza tìtulu"
local classi = sizz.get_classi(titulu) or ""
local nfubudda = sizz.get_nfubudda(titulu) or ""
if nfubudda ~= "" then
local articulu = mw.title.getCurrentTitle().fullText
nfubudda = mw.ustring.gsub(nfubudda, "{palora}", articulu)
end
local final = '<span class="' .. classi .. '"' .. ' title="' .. nfubudda .. '">' .. testu_titulu .. '</span>'
return final
end
function p.sizzioni(frame)
local args = frame:getParent().args
local titulu = args[1] and mw.text.trim(args[1]) or ''
local testu_finali = ''
if titulu == nil or titulu == '' then
_agghiunci_erruri(link_aiutu_sizzioni)
_agghiunci_catiguria('Wikizziunariu:Sizzioni senza tìtulu')
testu_finali = 'Sizzioni senza tìtulu'
else
if tip.is_type(titulu) then
testu_finali = p.vuci(frame)
elseif sizz.is_titulu(titulu) then
testu_finali = p.sizzioni_autru(frame)
else
if args[2] ~= nil and args[2] ~= '' then
_agghiunci_erruri(link_aiutu_tipu)
else
_agghiunci_erruri(link_aiutu_sizzioni)
end
_agghiunci_catiguria('Wikizziunariu:Sizzioni cu tìtulu scanusciutu', titulu)
testu_finali = b.ucfirst(titulu)
end
end
local testu_errura = table.concat(errura)
local testu_catigurii = table.concat(catigurii)
return testu_finali .. testu_errura .. testu_catigurii
end
return p