Mudanças entre as edições de "Módulo:Lari1"
Ir para navegação
Ir para pesquisar
| Linha 13: | Linha 13: | ||
end | end | ||
local function | local function parseEntry(entry) | ||
entry = mw.text.trim(entry) | entry = mw.text.trim(entry) | ||
if entry == "" then return nil, nil end | if entry == "" then return nil, nil end | ||
local ident, | local ident, qtd | ||
if entry:find(";") then | if entry:find(";") then | ||
ident, | ident, qtd = entry:match("^(.-)%s*;%s*(%d+)$") | ||
else | else | ||
ident, | ident, qtd = entry:match("^(.-)%s*:%s*(%d+)$") | ||
end | end | ||
if not ident or not | if not ident or not qtd then return nil, nil end | ||
return mw.text.trim(ident), tonumber( | return mw.text.trim(ident), tonumber(qtd) | ||
end | end | ||
function p.reward(frame) | function p.reward(frame) | ||
local args | local args = frame:getParent().args | ||
local | local raw = mw.text.trim(args["itens"] or "") | ||
local lang | local lang = mw.text.trim(args["lang"] or "pt") | ||
if raw == "" then return "" end | |||
if | |||
local wrap = mw.html.create("div"):addClass("lk-reward-wrap") | local wrap = mw.html.create("div"):addClass("lk-reward-wrap") | ||
wrap:tag("div"):addClass("lk-reward-lbl"):wikitext("Recompensa Final") | |||
local line = wrap:tag("div"):addClass("reward-items") | local line = wrap:tag("div"):addClass("reward-items") | ||
for entry in mw.text.gsplit( | for entry in mw.text.gsplit(raw, ",", true) do | ||
local ident, | local ident, qty = parseEntry(entry) | ||
if ident and | if ident and qty then | ||
local item = Item.resolve(ident) | local item = Item.resolve(ident) | ||
if not item then | if not item then | ||
item = { | item = { | ||
id | id = 0, | ||
image | image = ident:match("%.%w+$") and ident or (ident .. ".png"), | ||
names | names = { pt = ident, en = ident }, | ||
category = "misc" | category = "misc" | ||
} | } | ||
end | end | ||
line:wikitext(Item.renderOne(item, formatNumber( | line:wikitext(Item.renderOne(item, formatNumber(qty), lang, { | ||
showTooltip = true, | showTooltip = true, | ||
showCount | showCount = true | ||
})) | })) | ||
end | end | ||
Edição das 12h52min de 17 de março de 2026
A documentação para este módulo pode ser criada em Módulo:Lari1/doc
local p = {}
local Item = require("Módulo:Item")
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 parseEntry(entry)
entry = mw.text.trim(entry)
if entry == "" then return nil, nil end
local ident, qtd
if entry:find(";") then
ident, qtd = entry:match("^(.-)%s*;%s*(%d+)$")
else
ident, qtd = entry:match("^(.-)%s*:%s*(%d+)$")
end
if not ident or not qtd then return nil, nil end
return mw.text.trim(ident), tonumber(qtd)
end
function p.reward(frame)
local args = frame:getParent().args
local raw = mw.text.trim(args["itens"] or "")
local lang = mw.text.trim(args["lang"] or "pt")
if raw == "" then return "" end
local wrap = mw.html.create("div"):addClass("lk-reward-wrap")
wrap:tag("div"):addClass("lk-reward-lbl"):wikitext("Recompensa Final")
local line = wrap:tag("div"):addClass("reward-items")
for entry in mw.text.gsplit(raw, ",", true) do
local ident, qty = parseEntry(entry)
if ident and qty then
local item = Item.resolve(ident)
if not item then
item = {
id = 0,
image = ident:match("%.%w+$") and ident or (ident .. ".png"),
names = { pt = ident, en = ident },
category = "misc"
}
end
line:wikitext(Item.renderOne(item, formatNumber(qty), lang, {
showTooltip = true,
showCount = true
}))
end
end
return tostring(wrap)
end
return p