fes

Free Easy Site
Log | Files | Refs | README | LICENSE

std.lua (3908B)


      1 local M = {}
      2 
      3 function M.element(tag, attrs, content)
      4 	local out = { "<", tag }
      5 
      6 	if attrs then
      7 		for k, v in pairs(attrs) do
      8 			if v ~= false and v ~= nil then
      9 				if v == true then
     10 					out[#out + 1] = " " .. k
     11 				else
     12 					out[#out + 1] = " " .. k .. "=\"" .. tostring(v) .. "\""
     13 				end
     14 			end
     15 		end
     16 	end
     17 
     18 	if content == nil then
     19 		out[#out + 1] = " />"
     20 		return table.concat(out)
     21 	end
     22 
     23 	out[#out + 1] = ">"
     24 	out[#out + 1] = tostring(content)
     25 	out[#out + 1] = "</"
     26 	out[#out + 1] = tag
     27 	out[#out + 1] = ">"
     28 
     29 	return table.concat(out)
     30 end
     31 
     32 function M.a(link, str)
     33 	link = link or "https://example.com"
     34 	str = str or link
     35 	return M.element("a", { href = link }, str)
     36 end
     37 
     38 function M.download(link, str, downloadName)
     39 	link = link or "."
     40 	str = str or link
     41 	return M.element("a", { href = link, download = downloadName }, str)
     42 end
     43 
     44 function M.ha(link, str)
     45 	link = link or "https://example.com"
     46 	str = str or link
     47 	return M.element("a", { href = link, class = "hidden" }, str)
     48 end
     49 
     50 function M.external(link, str)
     51 	return M.element("a", { href = link, target = "_blank" }, str)
     52 end
     53 
     54 function M.note(str)
     55 	return M.element("div", { class = "note" }, str)
     56 end
     57 
     58 function M.muted(str)
     59 	return M.element("div", { class = "muted" }, str)
     60 end
     61 
     62 function M.callout(str)
     63 	return M.element("div", { class = "callout" }, str)
     64 end
     65 
     66 function M.h1(str)
     67 	return M.element("h1", nil, str or "")
     68 end
     69 
     70 function M.h2(str)
     71 	return M.element("h2", nil, str or "")
     72 end
     73 
     74 function M.h3(str)
     75 	return M.element("h3", nil, str or "")
     76 end
     77 
     78 function M.h4(str)
     79 	return M.element("h4", nil, str or "")
     80 end
     81 
     82 function M.h5(str)
     83 	return M.element("h5", nil, str or "")
     84 end
     85 
     86 function M.h6(str)
     87 	return M.element("h6", nil, str or "")
     88 end
     89 
     90 function M.p(str)
     91 	return M.element("p", nil, str or "")
     92 end
     93 
     94 function M.pre(str)
     95 	return M.element("pre", nil, str or "")
     96 end
     97 
     98 function M.code(str)
     99 	return M.element("pre", nil, M.element("code", nil, str or ""))
    100 end
    101 
    102 function M.ul(items)
    103 	items = items or {}
    104 	local out = {}
    105 	for _, item in ipairs(items) do
    106 		out[#out + 1] = M.element("li", nil, item)
    107 	end
    108 	return M.element("ul", nil, table.concat(out))
    109 end
    110 
    111 function M.ol(items)
    112 	items = items or {}
    113 	local out = {}
    114 	for _, item in ipairs(items) do
    115 		out[#out + 1] = M.element("li", nil, item)
    116 	end
    117 	return M.element("ol", nil, table.concat(out))
    118 end
    119 
    120 function M.tl(items)
    121 	items = items or {}
    122 	local out = {}
    123 	for _, item in ipairs(items) do
    124 		out[#out + 1] = M.element("li", nil, item)
    125 	end
    126 	return M.element("ul", { class = "tl" }, table.concat(out))
    127 end
    128 
    129 function M.blockquote(str)
    130 	return M.element("blockquote", nil, str or "")
    131 end
    132 
    133 function M.hr()
    134 	return M.element("hr")
    135 end
    136 
    137 function M.img(src, alt)
    138 	return M.element("img", { src = src or "", alt = alt or "" })
    139 end
    140 
    141 function M.strong(str)
    142 	return M.element("strong", nil, str or "")
    143 end
    144 
    145 function M.em(str)
    146 	return M.element("em", nil, str or "")
    147 end
    148 
    149 function M.br()
    150 	return M.element("br")
    151 end
    152 
    153 function M.div(content, class)
    154 	return M.element("div", class and { class = class } or nil, content or "")
    155 end
    156 
    157 function M.span(content, class)
    158 	return M.element("span", class and { class = class } or nil, content or "")
    159 end
    160 
    161 function M.escape(str)
    162 	str = tostring(str or "")
    163 	str = str:gsub("&", "&amp;")
    164 	str = str:gsub("<", "&lt;")
    165 	str = str:gsub(">", "&gt;")
    166 	str = str:gsub('"', "&quot;")
    167 	str = str:gsub("'", "&#39;")
    168 	return str
    169 end
    170 
    171 function M.highlight(str)
    172 	return M.element("span", { class = "highlight" }, str or "")
    173 end
    174 
    175 function M.banner(str)
    176 	return M.element("div", { class = "banner" }, str or "")
    177 end
    178 
    179 function M.center(str)
    180 	return M.element("div", { class = "center" }, str or "")
    181 end
    182 
    183 function M.nav(link, str)
    184 	link = link or "example.com"
    185 	str = str or link
    186 	return M.element("a", { href = link, class = "nav" }, str)
    187 end
    188 
    189 function M.rl(r, l)
    190 	return
    191 		M.element("span", { class = "left" }, r or "") ..
    192 		M.element("span", { class = "right" }, l or "")
    193 end
    194 
    195 return M