Module:BiomeDetails
From Eco - English Wiki
local p = {}
local Utils = require('Module:Utils')
function p.listBiomes(frame)
local args = Utils.normaliseArgs(frame)
return p.renderBiomeList(args.type)
end
function p.renderBiomeList(biomeType, includeSubBiomes)
local biomeData = require("Module:BiomeData")
---@type boolean
local isLand
if biomeType == 'Land' then
isLand = true
elseif biomeType == 'Water' then
isLand = false
end
local biomes = {}
local biome_keys = {}
for _, biome in pairs(biomeData) do
if biome.Name ~= '' and (isLand == nil or biome.Land == isLand) and (includeSubBiomes ~= true or biome.MainBiome == '') then
if biome.MainBiome == '' then
biome_keys[#biome_keys + 1] = biome.ID
if biomes[biome.ID] == nil then
biomes[biome.ID] = { Name = biome.Name, SubBiomes = {} }
else
biomes[biome.ID]["Name"] = biome.Name
end
else
if biomes[biome.MainBiome] == nil then
biomes[biome.MainBiome] = { Name = biome.Name, SubBiomes = {} }
end
biomes[biome.MainBiome]["SubBiomes"][#biomes[biome.MainBiome]["SubBiomes"] + 1] = biome.Name
end
end
end
table.sort(biome_keys)
local biome_list = {}
for _, biome_id in ipairs(biome_keys) do
local biome = biomes[biome_id]
biome_list[#biome_list + 1] = "* [[" .. biome.Name .. "]]"
for _, sname in pairs(biome["SubBiomes"]) do
biome_list[#biome_list + 1] = "** [[" .. biome.Name .. "#" .. sname .. "|" .. sname .. "]]"
end
end
return table.concat(biome_list, "\n")
end
return p