Difference between revisions of "Module:Currency"

From Nookipedia, the Animal Crossing wiki
m (fixing parameters)
(Adding Happy Ticket image)
(25 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
local p = {}
 
local p = {}
 +
local getArgs = require('Module:Arguments').getArgs
  
function p.outputCurrency (frame)
+
function p.main(frame)
local num = frame.args['2']
+
    local args      = getArgs(frame)
 +
    local nolink    = args.nolink 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 ''
 +
    local noimages  = args.noimages or ''
 +
    return p.outputCurrency(currency, num, nolink, note, short, size, frame, noimages)
 +
end
 +
 
 +
function p.outputCurrency(currency, num, nolink, note, short, size, frame, noimages)
 +
local formatnum
 
local function isEmpty(s)
 
local function isEmpty(s)
 
return s == nil or s == ''
 
return s == nil or s == ''
 +
end
 +
local function tableEmpty(s)
 +
return next(s) == nil
 
end
 
end
 
     local data = {
 
     local data = {
 
["Bells"] = { "99k Bells NH Inv Icon cropped.png", "15px", "Bell", "Bell", "Bell" },
 
["Bells"] = { "99k Bells NH Inv Icon cropped.png", "15px", "Bell", "Bell", "Bell" },
 +
["Caps"] = { "Cap PC Icon.png", "15px", "Cap", "Cap", "Cap" },
 
["Play Coins"] = { "Play Coins Icon.png", "15px", "Play Coins", "Play Coin", "Play Coin" },
 
["Play Coins"] = { "Play Coins Icon.png", "15px", "Play Coins", "Play Coin", "Play Coin" },
 
["Medals"] = { "Medal NL Icon.png", "18px", "Medals", "Medal", "Medal" },
 
["Medals"] = { "Medal NL Icon.png", "18px", "Medals", "Medal", "Medal" },
Line 15: Line 32:
 
["Heart Crystals"] = { "Heart Crystal NH Inv Icon.png", "15px", "Item:Heart Crystal (New Horizons)", "Heart Crystal", "Heart Crystal" },
 
["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" },
 
["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" },
+
["Nook Points"] = { "Nook Points NH Icon.svg", "18px", "NookLink#Nook Points", "Nook Point", "Point" },
 
["Points"] = { "", "", "Tom Nook Point System", "Point", "Point" },
 
["Points"] = { "", "", "Tom Nook Point System", "Point", "Point" },
 
["Happy Points"] = { "Happy Point aF Icon.png", "15px", "Happy Point", "Happy Point", "Happy Point" },
 
["Happy Points"] = { "Happy Point aF Icon.png", "15px", "Happy Point", "Happy Point", "Happy Point" },
["Happy Tickets"] = { "", "", "Happy Ticket", "Happy Ticket", "Happy Ticket" },
+
["Happy Tickets"] = { "Happy Ticket aF Icon.png", "22px", "Happy Ticket", "Happy Ticket", "Happy Ticket" },
["Poki"] = { "Poki NH Inv Icon cropped.png", "15px", "Poki", "Poki", "Poki" }
+
["Poki"] = { "Poki NH Inv Icon cropped.png", "15px", "Poki", "Poki", "Poki" },
 +
["Gold Points"] = { "My Nintendo Gold Point.png", "15px", "My Nintendo", "Gold Point", "Point" },
 +
["Platinum Points"] = { "My Nintendo Platinum Point.png", "15px", "My Nintendo", "Platinum Point", "Point" },
 +
["Platinum Points (PC)"] = { "My Nintendo Platinum Point PC.png", "15px", "My Nintendo", "Platinum Point", "Point" }
 
}
 
}
 
local print = ''
 
local print = ''
if not isEmpty(data[frame.args['1']][1]) then
+
if not isEmpty(currency) then
    print = print .. '[[File:'.. data[frame.args['1']][1]  .. '|'
+
if not isEmpty(data[currency][1]) and isEmpty(noimages) then
    if (frame.args['size']) then
+
    print = print .. '[[File:'.. data[currency][1]  .. '|'
    print = print .. frame.args['size']
+
    if not isEmpty(size) then
    else
+
    print = print .. size
    print = print .. data[frame.args['1']][2]
+
    else
    end
+
    print = print .. data[currency][2]
print = print .. '|link=|alt=]]'
+
    end
 +
print = print .. '|link=|alt=]] '
 +
end
 
if not isEmpty(num) then
 
if not isEmpty(num) then
print = print .. ' ' .. frame:preprocess('{{#invoke:formatnum|main|lang=en|' .. num .. '}}')
+
formatnum = require("Module:Formatnum")
end
+
print = print .. formatnum.formatNum(num,"en")
end
 
print = print .. ' '
 
if not isEmpty(frame.args['nolink']) then
 
if not isEmpty(frame.args['short']) then
 
print = print .. data[frame.args['1']][5]
 
if (num == 1) then
 
print = print .. ''
 
else
 
print = print .. 's'
 
end
 
else
 
print = print .. data[frame.args['1']][4]
 
if (num == 1) then
 
print = print .. ''
 
else
 
print = print .. 's'
 
end
 
 
end
 
end
else
+
print = print .. ' '
if not isEmpty(frame.args['short']) then
+
if not isEmpty(nolink) then
print = print .. '[[' .. data[frame.args['1']][3] .. '|' .. data[frame.args['1']][5]
+
if not isEmpty(short) then
if (num == 1) then
+
print = print .. data[currency][5]
print = print .. ''
+
if (num == 1) or currency == "Poki" then
 +
print = print .. ''
 +
else
 +
print = print .. 's'
 +
end
 
else
 
else
print = print .. 's'
+
print = print .. data[currency][4]
print = print .. ']]'
+
if (num == 1) or currency == "Poki" then
 +
print = print .. ''
 +
else
 +
print = print .. 's'
 +
end
 
end
 
end
 
else
 
else
print = print .. '[[' .. data[frame.args['1']][3] .. '|' .. data[frame.args['1']][4]
+
if not isEmpty(short) then
if (num == 1) then
+
print = print .. '[[' .. data[currency][3] .. '|' .. data[currency][5]
print = print .. ''
+
if (num == 1) or currency == "Poki" then
 +
print = print .. ''
 +
else
 +
print = print .. 's'
 +
end
 +
print = print .. ']]'
 
else
 
else
print = print .. 's'
+
print = print .. '[[' .. data[currency][3] .. '|' .. data[currency][4]
print = print .. ']]'
+
if (num == 1) or currency == "Poki" then
 +
print = print .. ''
 +
else
 +
print = print .. 's'
 +
end
 +
print = print .. ']]'
 
end
 
end
 
end
 
end
 
end
 
end
if not isEmpty(frame.args['note']) then
+
if not isEmpty(note) then
print = print .. frame:preprocess('{{Note|' .. frame.args['note'] .. '}}')
+
print = print .. frame:expandTemplate{ title = 'Note', args = { note }}
 
end
 
end
 
return print
 
return print

Revision as of 03:48, December 9, 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 of name_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 that currency_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 the short 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 getArgs = require('Module:Arguments').getArgs

function p.main(frame)
    local args      = getArgs(frame)
    local nolink    = args.nolink 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 ''
    local noimages  = args.noimages or ''
    return p.outputCurrency(currency, num, nolink, note, short, size, frame, noimages)
end

function p.outputCurrency(currency, num, nolink, note, short, size, frame, noimages)
	local formatnum
	local function isEmpty(s)
		return s == nil or s == ''
	end
	local function tableEmpty(s)
		return next(s) == nil
	end
    local data = {
		["Bells"] = { "99k Bells NH Inv Icon cropped.png", "15px", "Bell", "Bell", "Bell" },
		["Caps"] = { "Cap PC Icon.png", "15px", "Cap", "Cap", "Cap" },		
		["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.svg", "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 aF Icon.png", "22px", "Happy Ticket", "Happy Ticket", "Happy Ticket" },
		["Poki"] = { "Poki NH Inv Icon cropped.png", "15px", "Poki", "Poki", "Poki" },
		["Gold Points"] = { "My Nintendo Gold Point.png", "15px", "My Nintendo", "Gold Point", "Point" },
		["Platinum Points"] = { "My Nintendo Platinum Point.png", "15px", "My Nintendo", "Platinum Point", "Point" },
		["Platinum Points (PC)"] = { "My Nintendo Platinum Point PC.png", "15px", "My Nintendo", "Platinum Point", "Point" }
	}
	local print = ''
	if not isEmpty(currency) then
		if not isEmpty(data[currency][1]) and isEmpty(noimages) then
	    	print = print .. '[[File:'.. data[currency][1]  .. '|'
	    	if not isEmpty(size) then
	    		print = print .. size
	    	else
	    		print = print .. data[currency][2]
	    	end
			print = print .. '|link=|alt=]] '
		end
		if not isEmpty(num) then
			formatnum = require("Module:Formatnum")
			print = print .. formatnum.formatNum(num,"en")
		end
		print = print .. ' '
		if not isEmpty(nolink) then
			if not isEmpty(short) then
				print = print .. data[currency][5]
				if (num == 1) or currency == "Poki" then
					print = print .. ''
				else
					print = print .. 's'
				end
			else
				print = print .. data[currency][4]
				if (num == 1) or currency == "Poki" 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) or currency == "Poki" then
					print = print .. ''
				else
					print = print .. 's'
				end
				print = print .. ']]'
			else
				print = print .. '[[' .. data[currency][3] .. '|' .. data[currency][4]
				if (num == 1) or currency == "Poki" then
					print = print .. ''
				else
					print = print .. 's'
				end
				print = print .. ']]'
			end
		end
	end
	if not isEmpty(note) then
		print = print .. frame:expandTemplate{ title = 'Note', args = { note }}
	end
	return print
end

return p