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
Traesto fora da Wikipèdia - L'ençiclopedia łìbara e cołaboradiva in łéngua Vèneta "https://vec.wikipedia.org/w/index.php?title=Modulo:Fòrmuła_chìmega&oldid=784908"