summaryrefslogtreecommitdiff
path: root/lib/escfmt/eschtml.myr
blob: e32f4b3b73e066f3b856d4f41305d3f9002fe336 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use std

pkg escfmt =
	type eschtml = byte[:]

	const html	: (s : byte[:] -> eschtml) 
;;

const __init__ = {
	var s = ("" : eschtml)
	std.fmtinstall(std.typeof(s), htmlfmt)
}

const html = {s
	-> (s : eschtml)
}

const htmlfmt = {sb, ap, args
	var s : byte[:]

	s = std.vanext(ap)
	for c : std.bychar(s)
		match c
		| '&': std.sbputs(sb, "&")
		| '<': std.sbputs(sb, "&lt;")
		| '>': std.sbputs(sb, "&gt;")
		| '/': std.sbputs(sb, "&#x2f;")
		| _:   std.sbputc(sb, c)
		;;
	;;
}