Module:NIA

From Feed The Beast Wiki
Jump to: navigation, search

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

local p = {}

p.items = function( f )
        local args = f.args or f
        if f == mw.getCurrentFrame() and args[1] == nil then
                args = f:getParent().args
        else
                f = mw.getCurrentFrame()
        end
        local text = ""
        local escaped = string.gsub(args[1], '\\,', '|')
        for item in mw.text.gsplit(escaped, '%s*,%s*') do
                local deescaped = string.gsub(item, '|', ',')
                text = text .. f:callParserFunction('#icon', {"", item = deescaped, size = 16, mod = args.mod})
        end
        return text
end

function shuffle(list)
	math.randomseed(os.time() + math.random(100))
	local indices = {}
	for i = 1, #list do
		indices[#indices+1] = i
	end
	local shuffled = {}
	for i = 1, #list do
		local index = math.random(#indices)
		local value = list[indices[index]]
		table.remove(indices, index)
		shuffled[#shuffled+1] = value
	end
	return shuffled
end

p.rand = function(f)
	local args = f.args or f
	if f == mw.getCurrentFrame() and args[1] == nil then
		args = f:getParent().args
	else
		f = mw.getCurrentFrame()
	end
	if args[1] == "" then
		return ""
	end
	section = {}
	for item in mw.text.gsplit(args[1], "<span class=\"nowrap navbox") do
		if string.find(item, "&nbsp;'''·'''&#32;%[%[") then
			silly = item
			for subitem in mw.text.gsplit(item, "&nbsp;'''·'''&#32;%[%[") do
				if string.find(subitem, "</span>") then
					table.insert(section, (subitem:gsub("-item\">", "", 1):gsub("</span>", "")))
				else
					if string.find(subitem, "%[%[") then
						table.insert(section, (subitem:gsub("&nbsp;'''·'''&#32;", "")))
					else
						table.insert(section, "[[" .. subitem:gsub("&nbsp;'''·'''&#32;", ""))
					end
				end
			end
		else
			item = item:gsub("-item\">", "", 1):gsub("&nbsp;'''·'''&#32;", "")
			if item ~= "" then
				table.insert(section, "<span class=\"nowrap navbox-item\">" .. item)
			end
		end
	end
	return table.concat(shuffle(section), "&nbsp;'''·'''&#32;")
end

return p