Istruzioni per l'uso
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Formula chimica/man (modifica · cronologia)
Sandbox: Modulo:Formula chimica/sandbox (modifica · cronologia) · Sottopagine: lista · Test: Modulo:Formula chimica/test (modifica · cronologia · Esegui)
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:Formula chimica/man (modifica · cronologia)
Sandbox: Modulo:Formula chimica/sandbox (modifica · cronologia) · Sottopagine: lista · Test: Modulo:Formula chimica/test (modifica · cronologia · Esegui)
Modulo che implementa il template {{Formula chimica}}.
--[[
* Modulo che implementa il template Formula chimica.
]]--
require('strict')
local getArgs = require('Modulo:Arguments').getArgs
local mWikidata = require('Modulo:Wikidata')
local p = {}
-- Converte la formula dal formato Wikidata (C₁₀H₁₄) a quello itwiki (C<sub>10</sub>H<sub>14</sub>)
local function convertFormula(text)
return mw.ustring.gsub(text, '([₀-₉]+)', function(subtext)
subtext = mw.ustring.gsub(subtext, '.', function(char)
return mw.ustring.char(mw.ustring.codepoint(char) - 8272)
end)
return string.format('<sub>%s</sub>', subtext)
end)
end
local function getWikidataCategory(userval, wdval)
local cat
if userval then
if not wdval then
cat = 'P274 assente su Wikidata'
elseif wdval == userval or wdval == string.gsub(userval, '</sub><sub>', '') then
cat = 'P274 uguale su Wikidata'
else
cat = 'P274 differente su Wikidata'
end
elseif wdval then
cat = 'P274 letta da Wikidata'
end
return cat and string.format('[[Categoria:%s]]', cat) or ''
end
-- Per l'utilizzo da altro modulo
function p._main(args)
local userval, wdval, cat
-- valore utente e wikidata
userval = args[1]
wdval = mWikidata._getProperty({ 'P274', from = args.from })
-- converte il formato Wikidata a quello itwiki
if wdval then
wdval = convertFormula(wdval)
end
-- categorie di servizio
if mw.title.getCurrentTitle().namespace == 0 then
if not userval and not wdval and args.cat then
cat = string.format('[[Categoria:%s]]', args.cat)
elseif userval or wdval then
cat = getWikidataCategory(userval, wdval)
end
end
return (userval or wdval or '') .. (cat or '')
end
-- Funzione per il template {{Formula chimica}}
function p.main(frame)
return p._main(getArgs(frame, { parentOnly = true }))
end
return p