เอกสารการใช้งานสำหรับมอดูลนี้อาจสร้างขึ้นที่ มอดูล:RateList/doc
local p = {}
-- Translation
local Strings = {
And = "และ",
XP = "[[Experience|XP]]",
Harvesting = "[[การเลี้ยงสิ่งมีชีวิต#การเก็บเกี่ยวทรัพยากร|การเก็บทรัพยากร]]",
Taming = "[[การเชื่อง]]",
Breeding = "[[การผสมพันธุ์]] ([[การอิมพรินต์]], [[การผสมพันธุ์|การเติบโต]], [[การผสมพันธุ์|ฟักไข่/ตั้งครรภ์]])",
MatingInterval = "[[การผสมพันธุ์#ช่วงระยะเวลาการผสมพันธุ์|ช่วงเวลาการผสมพันธุ์]]",
Hexagon = "[[HLN-A (Genesis)|โบนัส Hexagon]]",
}
function p.main( frame )
local tArgs = require('Dev:Arguments').getArgs(frame)
local t = {
{ setting = Strings.XP, rate = tArgs.xp },
{ setting = Strings.Harvesting, rate = tArgs.harvesting },
{ setting = Strings.Taming, rate = tArgs.taming },
{ setting = Strings.Breeding, rate = tArgs.breeding },
{ setting = Strings.MatingInterval, rate = tArgs.matingInterval },
{ setting = Strings.Hexagon, rate = tArgs.hexagon },
}
local rates = {}
-- Connect strings with commas. Ternary operator
for k, v in pairs(t) do
if v.rate ~= nil then --Checking tArgs
rates[v.rate] = rates[v.rate] and (rates[v.rate] .. ', ' .. v.setting) or v.setting
end
end
local out = {}
-- Adding string "and" & insert to new table for sorting rate
for k, v in pairs(rates) do
v = v:gsub("(.*), (.-)", "%1 " .. Strings.And .. " %2")
table.insert(out, {rate = k, setting = v})
end
-- Sorting rates in descending order
table.sort(out, function(a,b) return a.rate > b.rate end)
-- Generate HTML list items inside unordered (bulleted) lists
local rateslist = mw.html.create('ul')
for i, list in ipairs(out) do
local li = rateslist:tag('li')
:wikitext(list.rate .. "x " .. list.setting)
end
return tostring(rateslist)
end
return p