Modulus:Titulus
Documenta
Hoc est Lua module. Eius documenta, quae sequuntur, apud paginam Module:Titulus/doc sunt (recensere • cronologia)
Sabulorum capsa (test page): Modulo:Titulus/Sandbox (recensere•historiam inspicere)
Hoc est Lua module. Eius documenta, quae sequuntur, apud paginam Module:Titulus/doc sunt (recensere • cronologia)
Sabulorum capsa (test page): Modulo:Titulus/Sandbox (recensere•historiam inspicere)
this module contains the code for Template:Titulus; receives the template's parameters, and converts them in strings generating the text to be visualized in the titulus box and the categories in which to place the book, based on the author, year, genre(s) and source available.
The module also checks if the page is a subpage (if it has slashes / in the title), and in this case does not add the categories.
p = {}
function p.titulus(frame)
pframe = frame:getParent()
config = frame.args
args = pframe.args
--template parameters
local saeculumquaero = require "Module:Titulus/SaeculumQuaero"
operaetitulus = config["OperaeTitulus"]
subtitulus = config["SubTitulus"] or ""
scriptor = config["Scriptor"] or ""
liber = config["Liber"] or ""
annus = config["Annus"] or ""
annusmonstratus = config["AnnusMonstratus"] or ""
operaewikipagina = config["OperaeWikiPagina"] or ""
fons = config["Fons"] or ""
editio = config["Editio"] or ""
interpres = config["Interpres"] or ""
annusinterpretationis = config["AnnusInterpretationis"] or ""
linguanativa = config["LinguaNativa"] or ""
recensor = config["Recensor"] or ""
genera = config["Genera"] or ""
frons = config["Frons"] or ""
scriptor2 = config["Scriptor2"]
scriptor3 = config["Scriptor3"]
scriptor4 = config["Scriptor4"]
scriptor5 = config["Scriptor5"]
scriptor6 = config["Scriptor6"]
--initializes internal variables, for ease of concatenation
categoriaomnia=""; categoriacapiti = ""; categoriascriptoris = ""; categorialibri = ""; anninumerus = ""; categoriaanni = ""; categoriagenerum = ""
nexusscriptoris2 = ""; nexusscriptoris3 = ""; nexusscriptoris4 = ""; nexusscriptoris5 = ""; nexusscriptoris6 = ""
categoriascriptoris2 = ""; categoriascriptoris3 = ""; categoriascriptoris4 = ""; categoriascriptoris5 = ""; categoriascriptoris6 = ""
--fetches the title of the page
titulus = mw.title.getCurrentTitle().text
--checks if the page is a subpage, i.e. if it has slashes /
if mw.ustring.find(titulus, "/") then
subpagina = true
else
subpagina = false
end
--Generating the strings that translate the templates' parameters
--SCRIPTOR (author of the work)
if scriptor == "Anonimus" or scriptor == "0" then --for anonimous works
nexusscriptoris= "Sine Nomine";
categoriascriptoris = "[[Categoria:Opera sine nomine scripta|".. titulus.. "]]" --adds the work in the Categoria:Opera sine nomine scripta
else --when the author is known
nexusscriptoris = "[[Scriptor:".. scriptor.. "|".. scriptor.. "]]";
if mw.title.new("Scriptor:"..scriptor).isRedirect then
scriptor = tostring(mw.title.new("Scriptor:".. scriptor).redirectTarget) --fixes the scriptor's name, if redirect, to insert it in the category
scriptor = string.gsub(scriptor, "Scriptor:", "")
end
categoriascriptoris = "[[Categoria:Opera quae ".. scriptor.. " scripsit|".. titulus.. "]]" --adds the work in the author's category
end
--SCRIPTOR2, 3 etc., for works with more authors (up to 5)
if scriptor2 ~= "0" then --2
nexusscriptoris2 = ", [[Scriptor:".. scriptor2.. "|".. scriptor2.. "]]";
if mw.title.new("Scriptor:"..scriptor2).isRedirect then
scriptor2 = tostring(mw.title.new("Scriptor:".. scriptor2).redirectTarget) --fixes the scriptor's name, if redirect, to insert it in the category
scriptor2 = string.gsub(scriptor2, "Scriptor:", "")
end
categoriascriptoris2 = "[[Categoria:Opera quae ".. scriptor2.. " scripsit|".. titulus.. "]]"
end
if scriptor3 ~= "0" then --3
nexusscriptoris3 = ", [[Scriptor:".. scriptor3.. "|".. scriptor3.. "]]";
if mw.title.new("Scriptor:"..scriptor3).isRedirect then
scriptor3 = tostring(mw.title.new("Scriptor:".. scriptor3).redirectTarget) --fixes the scriptor's name, if redirect, to insert it in the category
scriptor3 = string.gsub(scriptor3, "Scriptor:", "")
end
categoriascriptoris3 = "[[Categoria:Opera quae ".. scriptor3.. " scripsit|".. titulus.. "]]"
end
if scriptor4 ~= "0" then --4
nexusscriptoris4 = ", [[Scriptor:".. scriptor4.. "|".. scriptor4.. "]]";
if mw.title.new("Scriptor:"..scriptor4).isRedirect then
scriptor4 = tostring(mw.title.new("Scriptor:".. scriptor4).redirectTarget) --fixes the scriptor's name, if redirect, to insert it in the category
scriptor4 = string.gsub(scriptor4, "Scriptor:", "")
end
categoriascriptoris2 = "[[Categoria:Opera quae ".. scriptor4.. " scripsit|".. titulus.. "]]"
end
if scriptor5 ~= "0" then --5
nexusscriptoris5 = ", [[Scriptor:".. scriptor5.. "|".. scriptor5.. "]]";
if mw.title.new("Scriptor:"..scriptor5).isRedirect then
scriptor5 = tostring(mw.title.new("Scriptor:".. scriptor5).redirectTarget) --fixes the scriptor's name, if redirect, to insert it in the category
scriptor5 = string.gsub(scriptor5, "Scriptor:", "")
end
categoriascriptoris5 = "[[Categoria:Opera quae ".. scriptor5.. " scripsit|".. titulus.. "]]"
end
if scriptor6 ~= "0" then --6
nexusscriptoris6 = ", [[Scriptor:".. scriptor6.. "|".. scriptor6.. "]]";
if mw.title.new("Scriptor:"..scriptor6).isRedirect then
scriptor6 = tostring(mw.title.new("Scriptor:".. scriptor6).redirectTarget) --fixes the scriptor's name, if redirect, to insert it in the category
scriptor6 = string.gsub(scriptor6, "Scriptor:", "")
end
categoriascriptoris6 = "[[Categoria:Opera quae ".. scriptor6.. " scripsit|".. titulus.. "]]"
end
--OPERAETITULUS (title oh the work)
if operaetitulus == "0" then error('quaeso titulum operis in campo |OperaeTitulus= insere') end --if the title is not specified, calls for error
if subpagina == false then --if the page is not a subpage
nexusoperaetituli = operaetitulus --does not gerate a link
elseif subpagina == true then --if the page is a subpage
if operaewikipagina > "0" then
nexusoperaetituli = "[[".. operaewikipagina.. "|".. operaetitulus.. "]]"
else
nexusoperaetituli = "[[".. operaetitulus.. "]]"
end
end
--SUBTITULUS (subtitle of the work)
if subtitulus ~= "0" then
nexussubtituli = subtitulus
else
nexussubtituli = ""
end
--ANNUS (publication year)
if annus ~= "0" then --if the "annus" parameter is defined...
if annusmonstratus > "0" then
nexusanni = annusmonstratus --visualizes a different value from that used for categorizations, for cases like "inter 1650 et 1655" or similar
else
nexusanni = annus --the year will be visualized just as inserted in the template
end
saeculum = saeculumquaero.annus(annus)
categoriaanni = "[[Categoria:Saeculi ".. saeculum.. " opera|".. titulus.. "]]" --generates the category by putting together the "saeculum" and the eventuale "aCn"
else --if the annus parameter is not compiled, the year is unknown and the corresponding category is added
nexusanni = "anno incognito"
categoriaanni = "[[Categoria:Saeculi incogniti opera|".. titulus.. "]]"
end
-- INTERPRES and ANNUSINTERPRETATIONIS, for the translator and the year of translation
if interpres ~= "0" then
nexusinterpretis= "[[Scriptor:".. interpres.. "|".. interpres.. "]] Latine vertit"
if mw.title.new("Scriptor:"..interpres).isRedirect then
interpres = tostring(mw.title.new("Scriptor:".. interpres).redirectTarget) --fixes the translator's name, if redirect, to insert it in the category
interpres = string.gsub(interpres, "Scriptor:", "")
end
categoriainterpretis = "[[Categoria:Opera quae ".. interpres.. " Latine vertit|".. titulus.. "]]"
if interpres == "anonimus" or interpres == "Anonimus" or interpres == "incognitus" or interpres == "Incognitus" then --if the author of the translation is not known
nexusinterpretis = "Incognitus auctor Latine vertit"
categoriainterpretis = "[[Categoria:Auctoris incogniti interpretationes|".. titulus.. "]]"
end
if annusinterpretationis ~= "0" then --if the "annusinterpretationis" parameter is defined...
nexusanniinterpretationis = ", ".. annusinterpretationis
saeculum = saeculumquaero.annus(annusinterpretationis)
categoriaanniinterpretationis = "[[Categoria:Saeculi ".. saeculum.. " interpretationes|".. titulus.. "]]" --generates the category by putting together the "saeculum" and the eventuale "aCn"
if linguanativa ~= "0" then
linguanativa = linguanativa:lower() --ignore capitalization
if linguanativa == "anglicus" or linguanativa == "anglica" then
nexuslinguaenativae = " ex Anglico"
categorialinguaenativae = "[[Categoria:Interpretationes e lingua Anglica|".. titulus.. "]]"
elseif linguanativa == "arabicus" or linguanativa == "arabus" or linguanativa == "arabica" or linguanativa == "araba" then
nexuslinguaenativae = " ex Arabico"
categorialinguaenativae = "[[Categoria:Interpretationes e lingua Arabica|".. titulus.. "]]"
elseif linguanativa == "francicus" or linguanativa == "gallicus" or linguanativa == "francogallicus" or linguanativa == "gallica" or linguanativa == "francica" or linguanativa == "francogallica" then
nexuslinguaenativae = " e Francogallico"
categorialinguaenativae = "[[Categoria:Interpretationes e lingua Francogallica|".. titulus.. "]]"
elseif linguanativa == "germanicus" or linguanativa == "theodiscus" or linguanativa == "teodiscus" or linguanativa == "germanica" or linguanativa == "theodisca" or linguanativa == "teodisca" then
nexuslinguaenativae = " e Germanico"
categorialinguaenativae = "[[Categoria:Interpretationes e lingua Germanica|".. titulus.. "]]"
elseif linguanativa == "graecus" or linguanativa == "grecus" or linguanativa == "graeca" or linguanativa == "greca" then
nexuslinguaenativae = " e Graeco"
categorialinguaenativae = "[[Categoria:Interpretationes e lingua Graeca|".. titulus.. "]]"
elseif linguanativa == "hebraicus" or linguanativa == "hebraeus" or linguanativa == "iudaicus" or linguanativa == "hebraica" or linguanativa == "hebraea" or linguanativa == "iudaica" then
nexuslinguaenativae = " ex Hebraico"
categorialinguaenativae = "[[Categoria:Interpretationes e lingua Hebraica|".. titulus.. "]]"
elseif linguanativa == "italicus" or linguanativa == "italianus" or linguanativa == "italica" or linguanativa == "italiana" then
nexuslinguaenativae = " ex Italico"
categorialinguaenativae = "[[Categoria:Interpretationes e lingua Italiana|".. titulus.. "]]"
else
nexuslinguaenativae = ""; categorialinguaenativae = "[[Categoria:Interpretationes a lingua incognita|".. titulus.. "]]"
end
else
nexuslinguaenativae = ""; categorialinguaenativae = ""
end
else --if the annusinterpretationis parameter is not compiled, the year is unknown and the corresponding category is added
nexusanni = ", anno incognito"
categoriaanniinterpretationis = "[[Categoria:Saeculi incogniti interpretationes|".. titulus.. "]]"
end
end
--RECENSOR and EDITIO, for edition year and curator
if recensor ~= "0" then
editioest=true
nexusrecensoris= "[[Scriptor:".. recensor.. "|".. recensor.. "]] recensuit"
if mw.title.new("Scriptor:"..recensor).isRedirect then
recensor = tostring(mw.title.new("Scriptor:".. recensor).redirectTarget) --fixes the recensor's name, if redirect, to insert it in the category
recensor = string.gsub(recensor, "Scriptor:", "")
end
categoriarecensoris = "[[Categoria:Opera quae ".. recensor.. " recensuit|".. titulus.. "]]"
else
nexusrecensoris = ""; categoriarecensoris = ""
end
if editio ~= "0" then
if recensor > "0" then comma = "; " else comma = "" end
nexuseditionis= "</br>editio: ".. editio.. comma
categoriaeditionis = "[[Categoria:Opera cum editione|".. titulus.. "]]"
else
nexuseditionis = "editio: incognita"
categoriaeditionis = "[[Categoria:Opera sine editione|".. titulus.. "]]"
end
--FONS, generates a link to the source of the text
if fons ~= "0" then
nexusfontis = "fons: ".. fons
categoriafontis = "[[Categoria:Opera cum fonte|".. titulus.. "]]"
else
nexusfontis = "fons: incognitus"
if mw.title.new("Disputatio:"..mw.title.getCurrentTitle().rootText).exists then --TEMPORARY PATCH (25/06/20): looks for the discussion page to add the "sine fonte" category
categoriafontis = "[[Categoria:Opera sine fonte|".. titulus.. "]] [[Categoria:Opera cum fonte in disputatione|".. titulus.. "]]" --this category is only a TEMPORARY working tool, the whole string will be deleted after all the works are properly categorized!
else
categoriafontis = "[[Categoria:Opera sine fonte|".. titulus.. "]]"
end
end
nexusfontis = nexusfontis.. categoriafontis
--LIBER (generates a link to the scanned copy OR, lacking this, the discussion page)
if liber ~= "0" then
nexuslibri = "fons: [[Liber:".. liber.. "|librum vide]]"
if mw.title.new("Liber:"..liber).exists then
categoriafontis = "[[Categoria:Opera cum libro digitali".. "|".. titulus.. "]]"
else
error("Librum ".. liber.. " deest! - there is not such index!")
end
nexusfontis = nexuslibri.. categoriafontis
end
--GENERA (puts the page into the "genera" categories)
if genera ~= "0" then --if the "genera" parameter is defined...
genera = string.gsub(genera, ", ", ",") --adjusts the commas
genera = string.gsub(genera, ",", "]][[Categoria:") --splits the arguments, separated by commas, generating a category for each one
categoriagenerum = "[[Categoria:".. genera.. "]]"
else --if the "genera" parameter is not defined...
categoriagenerum = "[[Categoria:Opera sine generibus]]" --adds the corresponding category
end
--FRONS (locates a front page for exports)
if frons ~= "0" then
nexusfrontis = frons
else
nexusfrontis = ""
end
--puts the generic category "Opera omnia", collecting all published works
categoriaomnia = "[[Categoria:Opera omnia".. "|".. titulus.. "]]"
--Retieves Wikidata item
item = mw.wikibase.getEntity()
id = mw.wikibase.getEntityIdForCurrentPage()
if id == nil then
wikidata_cat = "[[Categoria:Opera sine re wikidata".. "|".. titulus.. "]]"
else
wikidata_cat = ""
end
if subpagina == true then
categoriacapiti = "[[Categoria:Capita ex operibus".. "|".. titulus.. "]]" --adds the "capita" (''chapter'') category
categoriascriptoris = ""
categoriafontis = ""
if annus == "0" then nexusanni = "" end
categoriaanni = ""
categoriainterpretis = ""
categoriaanniinterpretationis = ""
categoriaanniinterpretationis = ""
categorialinguaenativae = ""
categoriarecensoris = ""
categoriagenerum = ""
nexusfrontis = ""
categoriaomnia = ""
if editio == "0" then nexuseditionis = "" end
if fons == "0" then nexusfontis = "" end
if liber ~= "0" then nexusfontis = nexuslibri end
categoriaeditionis = ""
wikidata_cat = ""
end
--builds the table
tab = '<div id="ws-data" class="ws-noexport" style="display:none; speak:none">'
tab = tab.. '<span id="ws-author">'.. scriptor.. '</span>'
tab = tab.. '<span id="ws-title">'.. operaetitulus.. '</span>'
tab = tab.. '<span id="ws-scan">'.. liber.. '</span>'
tab = tab.. '<span id="ws-year">'.. annus.. '</span>'
if nexusfrontis > "0" then
tab = tab.. '<span id="ws-cover">'.. nexusfrontis.. '</span>'
tab = tab.. '</div>'
else
tab = tab.. '</div>'
end
tab = tab.. '<div class="titulusHeaderBox">'
tab = tab.. '<div class="ws-noexport" style="padding:1ex;font-size:120%; font-weight: bold;">'
tab = tab.. categoriaomnia.. nexusscriptoris.. categoriascriptoris.. nexusscriptoris2.. categoriascriptoris2.. nexusscriptoris3.. categoriascriptoris3.. nexusscriptoris4.. categoriascriptoris4.. nexusscriptoris5.. categoriascriptoris5.. nexusscriptoris6.. categoriascriptoris6
tab = tab.. '</div>'
tab = tab.. '<div class="ws-noexport" style="padding:1ex;font-size:140%;font-variant:small-caps; font-weight: bold;">'
tab = tab.. nexusoperaetituli.. categoriacapiti.. categoriagenerum
tab = tab.. '</div>'
tab = tab.. '<div class="ws-noexport" style="padding:1ex;font-size:110%; font-weight:bold;">'
tab = tab.. nexussubtituli
if interpres > "0" then
tab = tab.. '</div><div class="ws-noexport" style="padding:1ex;font-size:110%; font-weight:bold;">'
tab = tab.. nexusinterpretis.. nexuslinguaenativae.. categorialinguaenativae.. nexusanniinterpretationis.. categoriainterpretis.. categoriaanniinterpretationis
tab = tab.. '</div>'
else
tab = tab.. '</div>'
end
tab = tab.. '<div class="ws-noexport" class="ws-noexport" style="padding:1ex; font-weight: bold;">'
tab = tab.. nexusanni.. categoriaanni
tab = tab.. '</div>'
tab = tab.. '<div align="left" class="ws-noexport" style="padding:1ex;font-size:65%; font-weight:bold;">'
tab = tab.. nexuseditionis.. nexusrecensoris.. categoriarecensoris.. categoriaeditionis.. "</br>".. nexusfontis.. wikidata_cat
tab = tab.. '</div>'
tab = tab.. '</div>'
tab = tab.. '<div title="beginning"></div>'
tab = tab.. '<div class="text">'
return tab
end
return p