Difference between revisions of "Module:Currency"
PanchamBro (talk | contribs) (importing formatnum directly via Lua instead of being preprocessed) |
PanchamBro (talk | contribs) (changing template formatting to work on other Lua modules) |
||
Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
− | function p.outputCurrency ( | + | local function getArgs(frame) |
+ | local args = {} | ||
+ | for key, value in pairs(frame:getParent().args) do | ||
+ | args[key] = value | ||
+ | end | ||
+ | for key, value in pairs(frame.args) do | ||
+ | args[key] = value | ||
+ | end | ||
+ | return args | ||
+ | end | ||
+ | |||
+ | function p.main(frame) | ||
+ | local args = getArgs(frame) | ||
+ | local nolink = args.nolink or '' | ||
+ | local nb = args.nb or '' | ||
+ | local short = args.short or '' | ||
+ | local size = args.size or '' | ||
+ | local note = args.note or '' | ||
+ | local currency = args[1] or args.currency or '' | ||
+ | local num = args[2] or args.num or '' | ||
+ | return p.outputCurrency(currency, num, nolink ~= '', nb ~= '', short ~= '', size ~= '') | ||
+ | end | ||
+ | |||
+ | function p.outputCurrency (currency, num, nolink, nb, short, size) | ||
local formatnum | local formatnum | ||
− | |||
local function isEmpty(s) | local function isEmpty(s) | ||
return s == nil or s == '' | return s == nil or s == '' | ||
Line 23: | Line 45: | ||
} | } | ||
local print = '' | local print = '' | ||
− | if not isEmpty(data[ | + | if not isEmpty(data[currency][1]) then |
− | print = print .. '[[File:'.. data[ | + | print = print .. '[[File:'.. data[currency][1] .. '|' |
− | if ( | + | if (size) then |
− | print = print .. | + | print = print .. size |
else | else | ||
− | print = print .. data[ | + | print = print .. data[currency][2] |
end | end | ||
print = print .. '|link=|alt=]]' | print = print .. '|link=|alt=]]' | ||
if not isEmpty(num) then | if not isEmpty(num) then | ||
formatnum = require("Module:Formatnum") | formatnum = require("Module:Formatnum") | ||
− | print = print .. ' ' .. formatnum.formatNum( | + | print = print .. ' ' .. formatnum.formatNum(num,"en") |
end | end | ||
end | end | ||
print = print .. ' ' | print = print .. ' ' | ||
− | if not isEmpty( | + | if not isEmpty(nolink) then |
− | if not isEmpty( | + | if not isEmpty(short) then |
− | print = print .. data[ | + | print = print .. data[currency][5] |
if (num == 1) then | if (num == 1) then | ||
print = print .. '' | print = print .. '' | ||
Line 46: | Line 68: | ||
end | end | ||
else | else | ||
− | print = print .. data[ | + | print = print .. data[currency][4] |
if (num == 1) then | if (num == 1) then | ||
print = print .. '' | print = print .. '' | ||
Line 54: | Line 76: | ||
end | end | ||
else | else | ||
− | if not isEmpty( | + | if not isEmpty(short) then |
− | print = print .. '[[' .. data[ | + | print = print .. '[[' .. data[currency][3] .. '|' .. data[currency][5] |
if (num == 1) then | if (num == 1) then | ||
print = print .. '' | print = print .. '' | ||
Line 63: | Line 85: | ||
end | end | ||
else | else | ||
− | print = print .. '[[' .. data[ | + | print = print .. '[[' .. data[currency][3] .. '|' .. data[currency][4] |
if (num == 1) then | if (num == 1) then | ||
print = print .. '' | print = print .. '' | ||
Line 72: | Line 94: | ||
end | end | ||
end | end | ||
− | if not isEmpty( | + | if not isEmpty(note) then |
− | print = print .. frame:preprocess('{{Note|' .. | + | print = print .. frame:preprocess('{{Note|' .. note .. '}}') |
end | end | ||
return print | return print |
Revision as of 23:03, March 24, 2022
Module documentation (view)
Usage
This Lua module outputs the currency and its price for the {{Currency}} template to account for preprocessor node count limits. Data is stored in a table, and can determine how certain variables are used.
Portions of the module uses Module:Formatnum, see module for more information.
Inserting a new currency
["name_of_currency"] = { "currency_image", "currency_image_size", "link_to_currency", "name_of_currency", "short_name_of_currency" }
When adding a new currency to be used on pages, the following syntax must be inserted into the main data
table.
name_of_currency
describes the name of the currency that the editor will write in the Currency template. There is also a second instance ofname_of_source
, which can also feature a different text to its first instance.currency_image
requires an image (preferably an icon) to be added. It must include the filename extension.currency_image_size
describes the default size thatcurrency_image
will be presented in.link_to_currency
describes the link that the player will click on (provided that the link is present).short_name_of_currency
describes a shorter name of the currency when applying theshort
parameter on the main Currency template.
Example
["Bells"] = { "99k Bells NH Inv Icon cropped.png", "15px", "Bell", "Bell", "Bell" }
"Bells" is the name_of_currency
, while "Bell" functions as the second instance of name_of_source
, link_to_currency
, and short_name_of_currency
. Its currency_image
is "99k Bells NH Inv Icon cropped.png", and the currency_image_size
is set to "15px".
The output is: Bells
["Nook Miles"] = { "Nook Miles NH Icon Cropped.png", "18px", "Nook Miles", "Nook Mile", "Mile" }
"Nook Mile" is the name_of_currency
and link_to_currency
, while "Nook Mile" functions as the second instance of name_of_source
. Its short_name_of_currency
is "Mile". Its currency_image
is "Nook Miles NH Icon Cropped.png", and the currency_image_size
is set to "18px".
The output is: Nook Miles
When short is applied, the output is: Miles
See also
local p = {}
local function getArgs(frame)
local args = {}
for key, value in pairs(frame:getParent().args) do
args[key] = value
end
for key, value in pairs(frame.args) do
args[key] = value
end
return args
end
function p.main(frame)
local args = getArgs(frame)
local nolink = args.nolink or ''
local nb = args.nb or ''
local short = args.short or ''
local size = args.size or ''
local note = args.note or ''
local currency = args[1] or args.currency or ''
local num = args[2] or args.num or ''
return p.outputCurrency(currency, num, nolink ~= '', nb ~= '', short ~= '', size ~= '')
end
function p.outputCurrency (currency, num, nolink, nb, short, size)
local formatnum
local function isEmpty(s)
return s == nil or s == ''
end
local data = {
["Bells"] = { "99k Bells NH Inv Icon cropped.png", "15px", "Bell", "Bell", "Bell" },
["Play Coins"] = { "Play Coins Icon.png", "15px", "Play Coins", "Play Coin", "Play Coin" },
["Medals"] = { "Medal NL Icon.png", "18px", "Medals", "Medal", "Medal" },
["MEOW Coupons"] = { "MEOW Coupon Icon.png", "18px", "MEOW Coupons", "MEOW Coupon", "Coupon" },
["Leaf Tickets"] = { "Leaf Ticket PC Icon.png", "15px", "Leaf Ticket", "Leaf Ticket", "Ticket" },
["Nook Miles"] = { "Nook Miles NH Icon Cropped.png", "18px", "Nook Miles", "Nook Mile", "Mile" },
["Heart Crystals"] = { "Heart Crystal NH Inv Icon.png", "15px", "Item:Heart Crystal (New Horizons)", "Heart Crystal", "Heart Crystal" },
["Saharah Tickets"] = { "Saharah Ticket NH Inv Icon.png", "15px", "Item:Saharah Ticket (New Horizons)", "Saharah Ticket", "Saharah Ticket" },
["Nook Points"] = { "Nook Points NH Icon Cropped.png", "18px", "NookLink#Nook Points", "Nook Point", "Point" },
["Points"] = { "", "", "Tom Nook Point System", "Point", "Point" },
["Happy Points"] = { "Happy Point aF Icon.png", "15px", "Happy Point", "Happy Point", "Happy Point" },
["Happy Tickets"] = { "", "", "Happy Ticket", "Happy Ticket", "Happy Ticket" },
["Poki"] = { "Poki NH Inv Icon cropped.png", "15px", "Poki", "Poki", "Poki" }
}
local print = ''
if not isEmpty(data[currency][1]) then
print = print .. '[[File:'.. data[currency][1] .. '|'
if (size) then
print = print .. size
else
print = print .. data[currency][2]
end
print = print .. '|link=|alt=]]'
if not isEmpty(num) then
formatnum = require("Module:Formatnum")
print = print .. ' ' .. formatnum.formatNum(num,"en")
end
end
print = print .. ' '
if not isEmpty(nolink) then
if not isEmpty(short) then
print = print .. data[currency][5]
if (num == 1) then
print = print .. ''
else
print = print .. 's'
end
else
print = print .. data[currency][4]
if (num == 1) then
print = print .. ''
else
print = print .. 's'
end
end
else
if not isEmpty(short) then
print = print .. '[[' .. data[currency][3] .. '|' .. data[currency][5]
if (num == 1) then
print = print .. ''
else
print = print .. 's'
print = print .. ']]'
end
else
print = print .. '[[' .. data[currency][3] .. '|' .. data[currency][4]
if (num == 1) then
print = print .. ''
else
print = print .. 's'
print = print .. ']]'
end
end
end
if not isEmpty(note) then
print = print .. frame:preprocess('{{Note|' .. note .. '}}')
end
return print
end
return p