local p = {}
local facts = require("Module:DidYouKnow/facts")

local function formatFact(factText)
	return "* ... that " .. factText .. "?"
end

function p.getFacts()
	local s = ""
	local length = #facts.facts
	-- Different random seed every day (displays the same set of facts for a day, then a different set the next day, etc.)
	math.randomseed(math.floor(os.time()/(60*60*24))*2) -- *2 so that we will have a different set of facts compared to Fandom
	
	-- Ensure duplicate facts are not displayed
	local chosen = {}
	while #chosen < 8 do
		local random = math.random(1, length)
		local isPresent = false
		
		for i, v in ipairs(chosen) do
			if v == random then
				isPresent = true
				break
			end
		end
		
		if not isPresent then
			table.insert(chosen, random)
		end
	end
	
	-- Now we actually get to write the output.
	local result = {}
	for i, v in ipairs(chosen) do
		result[i] = formatFact(facts.facts[v])
	end
	return table.concat(result, "\n")
end

local function formatFactList(factTable)
	local facts = factTable.facts
	local length = #facts
	local result = {}
	
	for i = 1, length do
		result[i] = formatFact(facts[i])
	end
	
	return table.concat(result, "\n")
end

-- List all facts. Intended to allow easier debugging.
function p.listAllFacts()
	return formatFactList(facts)
end

function p.listEditcopyFacts()
	local editcopyFacts = require("Module:DidYouKnow/facts/editcopy")
	return formatFactList(editcopyFacts)
end

return p
