Module:Resources: Difference between revisions

From Nova Roma Official Wiki
mNo edit summary
No edit summary
Line 6: Line 6:
stone = "[[File:icon_stone.png|30px|link=Stone]]",
stone = "[[File:icon_stone.png|30px|link=Stone]]",
gold = "[[File:icon_gold.png|30px|link=Gold]]",
gold = "[[File:icon_gold.png|30px|link=Gold]]",
food = "[[File:icon_wheat.png|30px|link=Food]]",
wheat = "[[File:icon_wheat.png|30px|link=Wheat]]",
weapons = "[[File:icon_armament.png|30px|link=Armament]]",
weapons = "[[File:icon_armament.png|30px|link=Armament]]",
charcoal = "Charcoal",
charcoal = "[[File:resource charcoal.png|30px|link=Charcoal]]",
apples = "[[File:icon_apples.png|30px|link=Apples]]",
apples = "[[File:icon_apples.png|30px|link=Apples]]",
grapes = "[[File:icon_grapes.png|30px|link=Grapes]]",
wine = "[[File:icon_wine.png|30px|link=Wine]]",
fish = "[[File:icon_fish.png|30px|link=Fish]]",
olives = "[[File:icon_olives.png|30px|link=Olives]]",
oliveoil = "[[File:icon_oliveoil.png|30px|link=Olive Oil]]",
salt = "[[File:icon_salt.png|30px|link=Salt]]",
meat = "[[File:icon_pork.png|30px|link=Meat]]",
marble = "[[File:icon_marble.png|30px|link=Marble]]",
clay = "[[File:icon_clay.png|30px|link=Clay]]",
pottery = "[[File:icon_pottery.png|30px|link=Pottery]]",
}
}



Revision as of 00:39, 13 March 2026

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

local p = {}

local icons = {
	wood = "[[File:icon_wood.png|30px|link=Wood]]",
	tools = "[[File:icon_tools.png|30px|link=Tools]]",
	stone = "[[File:icon_stone.png|30px|link=Stone]]",
	gold = "[[File:icon_gold.png|30px|link=Gold]]",
	wheat = "[[File:icon_wheat.png|30px|link=Wheat]]",
	weapons = "[[File:icon_armament.png|30px|link=Armament]]",
	charcoal = "[[File:resource charcoal.png|30px|link=Charcoal]]",
	apples = "[[File:icon_apples.png|30px|link=Apples]]",
	grapes = "[[File:icon_grapes.png|30px|link=Grapes]]",
	wine = "[[File:icon_wine.png|30px|link=Wine]]",
	fish = "[[File:icon_fish.png|30px|link=Fish]]",
	olives = "[[File:icon_olives.png|30px|link=Olives]]",
	oliveoil = "[[File:icon_oliveoil.png|30px|link=Olive Oil]]",
	salt = "[[File:icon_salt.png|30px|link=Salt]]",
	meat = "[[File:icon_pork.png|30px|link=Meat]]",
	marble = "[[File:icon_marble.png|30px|link=Marble]]",
	clay = "[[File:icon_clay.png|30px|link=Clay]]",
	pottery = "[[File:icon_pottery.png|30px|link=Pottery]]",
}

function p.format(frame)
	local input = frame.args[1] or ""
	local result = {}
	
	-- Split by comma and process each resource
	for resource in input:gmatch("[^,]+") do
		resource = resource:match("^%s*(.-)%s*$") -- trim whitespace
		local amount, name = resource:match("(%d+)%s+(%w+)")
		
		if amount and name and icons[name] then
			-- If amount exists: "icon amount" with <br>
			table.insert(result, {icons[name] .. " " .. amount, true})
		else
			-- If only name: "icon" with space
			name = resource:match("(%w+)")
			if name and icons[name] then
				table.insert(result, {icons[name], false})
			end
		end
	end
	
	-- Join with <br> for amounts, space for names only
	local output = {}
	for i, item in ipairs(result) do
		table.insert(output, item[1])
	end
	
	local final = ""
	for i, item in ipairs(result) do
		final = final .. item[1]
		if item[2] and i < #result then
			final = final .. "<br>"
		elseif not item[2] and i < #result then
			final = final .. " "
		end
	end
	
	return final
end

return p