local M = {}

local function get(s)
	return "&" .. (s or "") .. ";"
end

M.legal = {
	copyright = get("copy"),
	registered_trademark = get("reg"),
	trademark = get("trade"),
}

M.currency = {
	euro = get("euro"),
	pound = get("pound"),
	yen = get("yen"),
	cent = get("cent"),
	dollar = "$",
}

M.math = {
	plus_minus = get("plusmn"),
	multiply = get("times"),
	divide = get("divide"),
	not_equal = get("ne"),
	less_equal = get("le"),
	greater_equal = get("ge"),
	infinity = get("infin"),
	approx = get("asymp"),
}

M.arrows = {
	left = get("larr"),
	right = get("rarr"),
	up = get("uarr"),
	down = get("darr"),
	left_right = get("harr"),
}

M.punctuation = {
	left_double_quote = get("ldquo"),
	right_double_quote = get("rdquo"),
	left_single_quote = get("lsquo"),
	right_single_quote = get("rsquo"),
	ellipsis = get("hellip"),
	em_dash = get("mdash"),
	en_dash = get("ndash"),
}

M.whitespace = {
	non_breaking = get("nbsp"),
	thin = get("thinsp"),
}

M.symbols = {
	degree = get("deg"),
	micro = get("micro"),
	section = get("sect"),
	paragraph = get("para"),
	check = get("check"),
	cross = get("cross"),
	bullet = get("bull"),
	middle_dot = get("middot"),
	broken_bar = get("brvbar"),
}

M.html = {
	less_than = get("lt"),
	greater_than = get("gt"),
	ampersand = get("amp"),
	double_quote = get("quot"),
	single_quote = get("apos"),
}

return M
