Modulo:Fòrmuła chìmega
--[[
* Moduło che el inplementa el modeło fòrmuła chìmega. Da it.wiki modulo:formula chimica
]]--
require('Modulo:No globals')
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 no ła ghe xe in Wikidata'
elseif wdval == userval or wdval == string.gsub(userval, '</sub><sub>', '') then
cat = 'P274 conpagna in Wikidata'
else
cat = 'P274 difarente in Wikidata'
end
elseif wdval then
cat = 'P274 lexesta 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 {{Fòrmuła chìmega}}
function p.main(frame)
return p._main(getArgs(frame, { parentOnly = true }))
end
return p