Module:Card

From Coral Island Wiki
Revision as of 10:02, 2 August 2023 by Admin coral island (talk | contribs) (Created page with "local p = {} local lib = require('Module:Feature') local LL = require('Module:Link label')._main local Ilib = require('Module:Icon') function p.main(frame) local args = require('Module:Arguments').getArgs(frame, { parentFirst = true, removeBlanks = false, wrapper = { 'Template:Card' } }) return p._main(args) end function p._main(args) local item = args.name or args[1] if not item then return mw.html.create() end -- if no input then return blank local link =...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

This module implements {{Card}}.


local p = {}
local lib = require('Module:Feature')
local LL = require('Module:Link label')._main
local Ilib = require('Module:Icon')

function p.main(frame)
	local args = require('Module:Arguments').getArgs(frame, {
		parentFirst = true,
		removeBlanks = false,
		wrapper = { 'Template:Card' }
	})
	return p._main(args)
end

function p._main(args)
	local item = args.name or args[1]
	if not item then return mw.html.create() end -- if no input then return blank
	local link = args.nolink and '' or (args.link or item)
	local ext = args.ext or 'png'
	local amount = args.amount or args.x or args[2]
	local text = args.text or args[3]
	local note = args.note
	local nolink = args.nolink or false
	local notext = args.notext or false
	local quality = args.quality or args.q
	quality = Ilib.verifyQuality(args.q)
	-- mw.logObject(args)
	local prefix = args.prefix or ''
	local suffix = args.suffix or ''
	prefix = prefix:gsub('{space}', ' ')
	suffix = suffix:gsub('{space}', ' ')
	
	local card = mw.html.create():tag('div'):addClass('custom-card noborder')
	local card_body = card:tag('div'):addClass('custom-card-body')
	local card_image = card_body:tag('div'):addClass('custom-card-image')
	local card_caption = card:tag('div'):addClass('custom-card-caption')
	
	-- main card image
	local filename = table.concat({prefix, item, suffix})
	card_image:wikitext('[[File:', filename, '.', ext, '|51px|link=', link, ']]')
	
	-- quality icon if valid
	if quality then
		card_body:addClass(' quality-' .. quality)
	end
	
	-- amount if any
	if lib.isNotEmpty(amount) then
		amount = tonumber(amount) ~= nil and lib.thousandsSeparator(amount) or amount
		card_body:tag('div'):addClass('custom-card-amount'):wikitext(amount)
	end
	
	-- default caption
	if args.show_caption then
		card_caption:tag('br')
		if link == '' then card_caption:wikitext(item)
		elseif link == item then card_caption:wikitext(LL(item))
		else card_caption:wikitext('[[', link, '|', item, ']]')
		end
	end
	
	-- append custom text if any
	if lib.isNotEmpty(text) then
		card_caption:tag('br')
		card_caption:wikitext(text)
	end
	
	-- ending note if any
	if lib.isNotEmpty(note) then
		card_caption:tag('br')
		card_caption:tag('small'):wikitext('(', note, ')')
	end
	
	-- mw.logObject(card) -- debug
	return card
end

return p