RuneScape Wiki
Advertisement

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

local p = {}
local coins_image = require('Module:Coins image')
 
function p.main(frame)
    local rarity,item,qty,qtyraw,item_page,image
    local args = frame:getParent().args
    
    rarity = string.lower(args[1] or '')
    item = args[2]
    qty = args[3] or 'no'
    -- item_page= args[4] or item
    if qty ~= 'no' then
        qty = qty:upper():gsub('[^%dKM]','')
        qtyraw = qty:gsub('K','000'):gsub('M','000000')
        -- Use raw just in case (e.g. 20K instead of 20000)
        qty = qtyraw
        -- Look for 6+ digits
        if qty:find('%d%d%d%d%d%d') then
            -- replace millions first (10m+)
            qty = qtyraw:gsub('^(%d%d%d?%d?)%d%d%d%d%d%d$','%1M')
            -- replace thousands next (100k to 9999k)
            -- this is ignored if millions are replaced
            qty = qty:gsub('^(%d%d%d%d?)%d%d%d$','%1K')
        end
    end
    if item:lower() == 'coins' then
		image = coins_image(qtyraw)
	else
		image = item..'.png'
	end
    local ret = mw.html.create('div')
        :addClass('TH_Gem-'..rarity)
        :css({ width = '66px',
                height = '90px',
                position = 'relative' })

    -- Item container
        :tag('span')
            :css({ width = '35px',
                    height = '35px',
                    position = 'relative',
                    top = '28px',
                    ['z-index'] = '2' })
            :wikitext(string.format('[[File:%s|35px|link=%s]]',image,item))
        :done()
    if qty ~= 'no' then
        qty = qty:upper():gsub('[^%dKM]','')
        -- Look for 6+ digits
        if qty:find('%d%d%d%d%d%d') then
            -- replace millions first (10m+)
            qty = qty:gsub('^(%d%d%d?%d?)%d%d%d%d%d%d$','%1M')
            -- replace thousands next (100k to 9999k)
            -- this is ignored if millions are replaced
            qty = qty:gsub('^(%d%d%d%d?)%d%d%d$','%1K')
        end
        local font_color
        if qty:find('K') then
            font_color = '#FFFFFF'
        elseif qty:find('M') then
            font_color = '#01FF80'
        else
            font_color = '#FFFF00'
        end
        ret:tag('span')
            :css({ position = 'relative',
                    bottom = '14px',
                    right = '7px',
                    ['z-index'] = '3',
                    ['font-family'] = 'runescape-small',
                    ['font-size'] = '20px',
                    color = font_color,
                    ['text-shadow'] = '1px 1px 0px black' })
            :wikitext(qty)
        :done()
    end

    return tostring(ret)
end

return p
Advertisement