Module:Infobox Plant

local p = {}

-- Grabs args from the parent frame -- Trims and parses the args into a table, then returns the table function norm local origArgs = mw.getCurrentFrame:getParent.args local args = {} for k, v in pairs( origArgs ) do       v = mw.text.trim( tostring( v ) ) if v ~= '' then args[k] = v       end end return args end

-- Main entry point for the Module function p.main -- get args from the Template local args = norm -- create values outside of if statements to ensure they are available to whole function local species = '' local check = '' -- assign variables for plant or tree whatever is passed. Plant has priority so if both are passed only plant will continue. if args.plant ~= nil then species = args.plant check = 'plant' elseif args.tree ~= nil then species = args.tree check = 'tree' end -- check to see if species was actually passed in	if species == '' then return 'plant or tree must be specified.' end local speciesData = {} local speciesTable = {} -- checks if plant and assigns correct modules based on check if check == 'plant' then speciesData = require( "Module:PlantData" ) speciesTable = speciesData.plants[species] else speciesData = require( "Module:TreeData" ) speciesTable = speciesData.trees[species] end

-- checks if species can be found in plant data or tree data based on what was requested if speciesTable == {} then if check == 'plant' then return species .. ' could not be found in Module:PlantData.' else return species .. ' could not be found in Module:TreeData.' end end

-- From now on using speciesTable."KeyValue" will return the value from that key. for most things a check for species type is not necessary

-- Build an Infobox_Plant -- string used to build the infobox local infobox = '{| class=\"infobox\"\n' -- name of the plant/tree infobox = infobox .. '|- style=\"background-color: darkred; text-align: center;\"\n| colspan=\"2\" | \'\'\' ' .. species .. ' \'\'\'\n' -- the sub heading plant or tree infobox = infobox .. '|- style=\"text-align: center; background-color: '		if check == 'plant' then		infobox = infobox .. '#4b9130;\"\n| colspan=\"2\" | \'\'\'Plant\'\'\'\n' else infobox = infobox .. '#517ab2;\"\n| colspan=\"2\" | \'\'\'Tree\'\'\'\n'   end 	-- Plants Image	local checkImage = {'_Plant.png','_Plant.jpg','_Plant.jpeg','_Tree.png','_Tree.jpg','_Tree.jpeg'}	local image =  	local speciesimagename = string.gsub(species, ' ', )	for i,v in ipairs(checkImage) do 		image = speciesimagename .. checkImage[i]		if mw.title.makeTitle('File', image).exists then			break		end		if table.getn(checkImage) == i then			image = 'NoImage.png' 			if check == 'Plant' then 				image = image .. '|link=https://eco.gamepedia.com/index.php?title=Special:Upload&wpDestFile=' .. speciesimagename .. '_Plant.png|'			end			if check == 'Tree' then 				image = image .. '|link=https://eco.gamepedia.com/index.php?title=Special:Upload&wpDestFile=' .. speciesimagename .. '_Tree.png|'			end						end	end	infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding: 10px;\" | \n'

-- 'General' section header infobox = infobox .. '|- style=\"background-color: #4B9130; text-align: center;\"\n| colspan=\"2\" | \'\'\'General\'\'\'\n' --Harvestable plant if speciesTable.seedDrop ~= nil or speciesTable.resourceItem ~= nil then infobox = infobox .. '|- valign=\"center\"\n| Harvestable:\n| style=\"text-align: right;\" | Yes \n' end --Underwater plant if speciesTable.isWater ~= nil then infobox = infobox .. '|- valign=\"center\"\n| Underwater Plant:\n| style=\"text-align: right;\" | Yes \n' end --Decorative Plant if speciesTable.isDecorative ~= nil then infobox = infobox .. '|- valign=\"center\"\n| Decorative Plant:\n| style=\"text-align: right;\" | Yes \n' end -- 'Agriculture' section header if speciesTable.seedDrop ~= nil or speciesTable.resourceItem ~= nil then infobox = infobox .. '|- style=\"background-color: #4B9130; text-align: center;\"\n| colspan=\"2\" | 	\'\'\'Agriculture\'\'\'\n' -- Harvested Seed if speciesTable.seedDrop ~= nil and speciesTable.seedMax ~= '0.0' then infobox = infobox .. '|- valign=\"center\"\n| Harvested Seed:\n| style=\"text-align: right;\" | ' .. speciesTable.seedDrop .. '\n' end -- Harvested Item if speciesTable.resourceItem ~= nil then infobox = infobox .. '|- valign=\"center\"\n| Harvested Item:\n| style=\"text-align: right;\" | ' .. speciesTable.resourceItem .. '\n' end -- Ideal Temp if speciesTable.idealTempMin ~= nil then infobox = infobox .. '|- valign=\"center\"\n| Ideal Temperature Range:\n| style=\"text-align: right;\" | ' .. speciesTable.idealTempMin .. ' - ' .. speciesTable.idealTempMax .. '\n' end -- Ideal Moisture if speciesTable.idealMoistureMin ~= nil then infobox = infobox .. '|- valign=\"center\"\n| Ideal Moisture Range:\n| style=\"text-align: right;\" | ' .. speciesTable.idealMoistureMin .. ' - ' .. speciesTable.idealMoistureMax .. '\n' end -- Ground nutrients if speciesTable.nitrogenHalfSpeed ~= nil or speciesTable.phosphorusHalfSpeed ~= nil or speciesTable.potassiumHalfSpeed ~= nil or speciesTable.soilMoistureHalfSpeed ~= nil then infobox = infobox .. '|-\n| Minimum Soil Nutrients:\n| style=\"text-align: right;\" | \n' if speciesTable.nitrogenHalfSpeed ~= nil then infobox = infobox .. '|- style=\"color: red; valign: center;\"\n| Nitrogen:\n| style=\"text-align: right;\" | ' .. speciesTable.nitrogenHalfSpeed .. '\n' end if speciesTable.phosphorusHalfSpeed ~= nil then infobox = infobox .. '|- style=\"color: orange; valign: center;\"\n| Phosphorous:\n| style=\"text-align: right;\" | ' .. speciesTable.phosphorusHalfSpeed .. '\n' end if speciesTable.potassiumHalfSpeed ~= nil then infobox = infobox .. '|- style=\"color: yellow; valign: center;\"\n| Potassium:\n| style=\"text-align: right;\" | ' .. speciesTable.potassiumHalfSpeed .. '\n' end if speciesTable.soilMoistureHalfSpeed ~= nil then infobox = infobox .. '|- style=\"color: lightblue; valign: center;\"\n| Soil Moisture:\n| style=\"text-align: right;\" | ' .. speciesTable.soilMoistureHalfSpeed .. '\n' end end end -- 'Other' section header infobox = infobox .. '|- style=\"background-color: #4B9130; text-align: center;\"\n| colspan=\"2\" | \'\'\'Other\'\'\'\n' --Carbon release if speciesTable.carbonRelease ~= nil then local absoluteCarbon = string.sub(speciesTable.carbonRelease, 2) infobox = infobox .. '|- valign=\"center\"\n| Carbon Absorbed:\n| style=\"text-align: right;\" | ' .. absoluteCarbon .. ' ppm \n' end

infobox = infobox .. '|}'   return infobox end

return p