Mudanças entre as edições de "Módulo:Price"
Ir para navegação
Ir para pesquisar
m |
|||
| (3 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
| Linha 1: | Linha 1: | ||
local p = {} | local p = {} | ||
local itemData = require("Módulo:ItemData") | local itemData = require("Módulo:ItemData") | ||
| Linha 5: | Linha 4: | ||
local function formatNumber(num) | local function formatNumber(num) | ||
num = tonumber(num) or 0 | num = tonumber(num) or 0 | ||
if num >= 1e9 then return string.format("%.0f", num / 1e6) .. "KKK" | if num >= 1e9 then | ||
elseif num >= 1e6 then return string.format("%.0f", num / 1e6) .. "KK" | return string.format("%.0f", num / 1e6) .. "KKK" | ||
elseif num >= 1e4 then return string.format("%.0f", num / 1e3) .. "K" | elseif num >= 1e6 then | ||
else | return string.format("%.0f", num / 1e6) .. "KK" | ||
elseif num >= 1e4 then | |||
return string.format("%.0f", num / 1e3) .. "K" | |||
else | |||
local s = tostring(num) | |||
return s:reverse():gsub("(%d%d%d)", "%1,"):reverse():gsub("^,", "") | |||
end | |||
end | end | ||
local function buscarChaveCorreta(nome) | local function buscarChaveCorreta(nome) | ||
local base = mw.text.trim(nome):lower():gsub("_", " "):gsub("%.png$", "") | local base = mw.text.trim(nome):lower():gsub("_", " "):gsub("%.png$", ""):gsub("%.gif$", ""):gsub("%.jpg$", ""):gsub("%.webp$", "") | ||
for chave, dados in pairs(itemData) do | for chave, dados in pairs(itemData) do | ||
local kbase = chave:lower():gsub("_", " "):gsub("%.png$", "") | local kbase = chave:lower():gsub("_", " "):gsub("%.png$", ""):gsub("%.gif$", ""):gsub("%.jpg$", ""):gsub("%.webp$", "") | ||
local nomeTraduzido = (dados.nome or ""):lower() | if kbase == base then return chave end | ||
if | local nomeTraduzido = (dados.nome or ""):lower():gsub("_", " "):gsub("%.png$", ""):gsub("%.gif$", ""):gsub("%.jpg$", ""):gsub("%.webp$", "") | ||
if nomeTraduzido == base then return chave end | |||
end | end | ||
return | return nil | ||
end | end | ||
function p.render(frame) | function p.render(frame) | ||
local args = frame.args | local args = frame:getParent().args or {} | ||
local nome = args[1] or "" | local nome = args[1] or "" | ||
local qtd = tonumber(args.qtd or 1) | local qtd = tonumber(args.qtd or "1") or 1 | ||
local chave | local chave = buscarChaveCorreta(nome) | ||
if not chave then | |||
if | chave = nome .. ".png" | ||
end | end | ||
local data = itemData[chave] or {} | |||
local nomeCompleto = data.nome or nome | |||
local desc = data.desc | |||
local tooltip = nomeCompleto | |||
if desc and desc ~= "" then | |||
tooltip = tooltip .. "\n—\n" .. desc | |||
end | |||
local qtdFormatada = formatNumber(qtd) | |||
local span = mw.html.create("span") | local span = mw.html.create("span") | ||
span:addClass("item-price-inline") | span:addClass("item-price-inline") | ||
span:attr("data-sort-value", qtd) | span:attr("data-sort-value", tostring(qtd)) | ||
span:attr("data-tooltip", tooltip) | |||
local wrap = span:tag("span") | |||
wrap:addClass("item-wrapper") | |||
wrap:attr("data-tooltip", tooltip) | |||
wrap:tag("span") | |||
:wikitext(string.format("[[Arquivo:%s | :wikitext(string.format("[[Arquivo:%s|link=]]", chave)) | ||
local | local count = wrap:tag("span"):addClass("item-count") | ||
count:tag("span"):addClass("item-count-x"):wikitext("x") | |||
count:wikitext(qtdFormatada) | |||
return tostring(span) | return tostring(span) | ||
Edição atual tal como às 14h59min de 17 de junho de 2025
A documentação para este módulo pode ser criada em Módulo:Price/doc
local p = {}
local itemData = require("Módulo:ItemData")
local function formatNumber(num)
num = tonumber(num) or 0
if num >= 1e9 then
return string.format("%.0f", num / 1e6) .. "KKK"
elseif num >= 1e6 then
return string.format("%.0f", num / 1e6) .. "KK"
elseif num >= 1e4 then
return string.format("%.0f", num / 1e3) .. "K"
else
local s = tostring(num)
return s:reverse():gsub("(%d%d%d)", "%1,"):reverse():gsub("^,", "")
end
end
local function buscarChaveCorreta(nome)
local base = mw.text.trim(nome):lower():gsub("_", " "):gsub("%.png$", ""):gsub("%.gif$", ""):gsub("%.jpg$", ""):gsub("%.webp$", "")
for chave, dados in pairs(itemData) do
local kbase = chave:lower():gsub("_", " "):gsub("%.png$", ""):gsub("%.gif$", ""):gsub("%.jpg$", ""):gsub("%.webp$", "")
if kbase == base then return chave end
local nomeTraduzido = (dados.nome or ""):lower():gsub("_", " "):gsub("%.png$", ""):gsub("%.gif$", ""):gsub("%.jpg$", ""):gsub("%.webp$", "")
if nomeTraduzido == base then return chave end
end
return nil
end
function p.render(frame)
local args = frame:getParent().args or {}
local nome = args[1] or ""
local qtd = tonumber(args.qtd or "1") or 1
local chave = buscarChaveCorreta(nome)
if not chave then
chave = nome .. ".png"
end
local data = itemData[chave] or {}
local nomeCompleto = data.nome or nome
local desc = data.desc
local tooltip = nomeCompleto
if desc and desc ~= "" then
tooltip = tooltip .. "\n—\n" .. desc
end
local qtdFormatada = formatNumber(qtd)
local span = mw.html.create("span")
span:addClass("item-price-inline")
span:attr("data-sort-value", tostring(qtd))
local wrap = span:tag("span")
wrap:addClass("item-wrapper")
wrap:attr("data-tooltip", tooltip)
wrap:tag("span")
:wikitext(string.format("[[Arquivo:%s|link=]]", chave))
local count = wrap:tag("span"):addClass("item-count")
count:tag("span"):addClass("item-count-x"):wikitext("x")
count:wikitext(qtdFormatada)
return tostring(span)
end
return p