math.randomseed(os.time())
local str = dofile('lib/str.lua')
sorcery = { lib = { class = dofile('lib/class.lua') }}
local color = dofile('lib/color.lua')
local ingredients = {}
local key = ''
print('enter a list of ingredients')
local huepoint = math.random(0,360)
local newhue = function()
	local advance = (360/#ingredients)
	huepoint = math.floor(huepoint + advance) % 360
	return huepoint
end
local prompt = function(p)
	io.stdout:write(p)
	return io.stdin:read()
end
do local i = 1 while true do
	local ing = prompt(string.format('[%u]> ', i))
	if ing ~= '' then
		ingredients[i] = {
			name = ing;
			sym = string.upper(string.sub(ing,1,1));
		}
	else break end
	i = i + 1
end end

for i,struc in ipairs(ingredients) do
	ingredients[i].color = color {
		hue = newhue(); saturation = 1, luminosity = 0.7;
	};
	key = key .. string.format('\t\t<div style="background:%s;color:%s;padding:0.3em"><strong>[%s]</strong> %s</div>\n',
		struc.color:brighten(1.3):hex(), struc.color:darken(0.5):hex(),
		struc.sym,struc.name)
end
print('enter a recipe matrix')
local rows = {}
do local row = 1 while true do
	local r = prompt('# ')
	if r == '' then break end
	rows[row] = str.explode(r, '%s+', true)
	row = row + 1
end end

local tbl = ''
local maxcols = 0
for r,row in pairs(rows) do
	for c,idx in pairs(row) do
		if idx == '0' then
			tbl = tbl .. '\t\t<div style="height:1.5em"></div>\n'
		else
			local item = ingredients[tonumber(idx)]
			tbl = tbl .. string.format('\t\t<div style="background:%s;color:%s;height:1.5em;border:1px inset %s">%s</div>\n', item.color:hex(),item.color:darken(0.5):hex(),item.color:darken(0.3):hex(),item.sym)
		end
		if c > maxcols then maxcols = c end
	end
end
tbl = string.format(
	'<div style="border:1px outset #D6008A; background:black; width: 10em">\n' ..
		'\t<div style="background:#FF5EC6;color:#28001A;padding:0.3em;text-align:center"><strong>%s</strong></div>\n' ..
		'\t<div style="display:grid;grid:auto-flow / repeat(%u,1.5em);text-align:center;width:fit-content;margin:1em auto;gap:0.1em">\n' ..
			'%s' ..
		'\t</div>\n' ..
		'\t<div>\n' ..
			'%s' ..
		'\t</div>\n' ..
	'</div>',(...),maxcols,tbl,key)

print('<!-- automatically generated by util/recgen.lua, do not edit! -->')
print(tbl)
