RuneScape Wiki
Register
Advertisement

Documentation for this module may be created at Module:SellersLine/doc

-- <pre>
local p = {}

local coins_image = require('Module:Coins image')

local editbutton = require('Module:Edit button')
local edit = editbutton("'''?''' (edit)")
local commas = require('Module:Addcommas')._add

local free_sample = 'Free sample'

function p.main(frame)
	local args = frame:getParent().args

	local _args = {}
	local store = args['store'] or edit
	local locationwithlink = args['location'] or edit
	local location = string.gsub(string.gsub(locationwithlink, '%[%[', ''), '%]%]', '')

	-- item cost
	local cost = string.lower(args['price'] or '')
	if cost == 'free' or cost == '0' or cost == 'sample' then
		cost = free_sample
	else
		if cost:find('%S') then
			cost = string.gsub(cost,',','')
			cost = tonumber(cost)
			if cost then
				cost = commas(cost)
			else
				cost = edit
			end
		else
			cost = edit
		end
	end

	-- currency
	local currency = args['currency'] or ''
	if currency:find('%S') and not (string.match(currency:lower(),'^coin')) and cost ~= free_sample then
		local currencyimg = args['currencyimg']
		if currencyimg then
			currency = string.format('[[File:%s|link=]]%s ',currencyimg,currency)
		end
	elseif cost == free_sample then
		currency = '-'
	else
		currency = string.format('[[File:%s|link=]]%s ',coins_image(tonumber(cost) or 100),'Coins')
	end

	-- base amount in stock
	local stock = args['stock'] or ''
	if stock:find('%S') then
		stock = string.lower(string.gsub(stock,',',''))
		if stock == '∞' or stock == 'inf' or stock == 'infinite' then
			stock = '∞'
		else
			stock = tonumber(stock)
		end
		if not stock then
			stock = edit
		end
	else
		stock = edit
	end

	-- members only?
	local mems = string.lower(args['members'] or '')
	if mems == 'yes' then
		mems = true
	elseif mems == 'no' then
		mems = false
	else
		mems = 0
	end

	_args = { store = store, location = location, cost = cost, currency = currency, stock = stock, mems = mems}

	return p._main(_args)
end

function p._main(args)
	local memsmap = {
		[true] = 'Yes',
		[false] = 'No',
		[0] = edit
	}

	local ret = mw.html.create('tr')
	if args.mems == true then
		ret:addClass('members-line')
	end

	ret	:tag('td')
			:wikitext(args.store)
		:done()
		:tag('td')
			:wikitext(args.location)
		:done()
		:tag('td')
			:css('text-align','right')
			:wikitext(args.cost)
		:done()
		:tag('td')
			:css('text-align','right')
			:wikitext(args.currency)
		:done()
		:tag('td')
			:css('text-align','right')
			:wikitext(args.stock)
		:done()
		:tag('td')
			:css('text-align','center')
			:wikitext(memsmap[args.mems])
		:done()

	return ret
end

return p
Advertisement