local lunacolors = require 'lunacolors'

local M = {}

function M.highlight(text)
	return text:gsub('\'.-\'', lunacolors.yellow)
	--:gsub('%-%- .-', lunacolors.black)
end

function M.renderCodeBlock(text)
	local longest = 0
	local lines = string.split(text:gsub('\t', '    '), '\n')

	for i, line in ipairs(lines) do
		local len = line:len()
		if len > longest then longest = len end
	end

	for i, line in ipairs(lines) do
		lines[i] = lunacolors.format('{greyBg}' .. ' ' .. M.highlight(line:sub(0, longest))
		.. string.rep(' ', longest - line:len()) .. ' ')
	end

	return '\n' .. lunacolors.format('{greyBg}' .. table.concat(lines, '\n')) .. '\n'
end

function M.renderInfoBlock(type, text)
	local longest = 0
	local lines = string.split(text:gsub('\t', '    '), '\n')

	for i, line in ipairs(lines) do
		local len = line:len()
		if len > longest then longest = len end
	end

	for i, line in ipairs(lines) do
		lines[i] = ' ' .. M.highlight(line:sub(0, longest))
		.. string.rep(' ', longest - line:len()) .. ' '
	end

	local heading
	if type == 'warning' then
		heading = lunacolors.yellowBg(lunacolors.black(' ⚠ Warning '))
	end
	return '\n' .. heading .. '\n' .. lunacolors.format('{greyBg}' .. table.concat(lines, '\n')) .. '\n'
end
return M