code wiki / _hdl_build / _wb_tmpl.nx
_wb_tmpl.nx source
↩ module page · 34 lines · 1277 B
1// AUTHORED BY THE NISHI BUILDER (pattern: TEMPLATE_TABLE) -- table-driven fragment renderer, no Claude logic
2// raw=0 slots ESCAPED (hs_escape), raw=1 verbatim (pre-sanitized rich). -1 = unknown kind, refused.
3import "nx_syscalls.nx"
4import "nx_html_sanitize.nx"
5func _wb_tmpl_cat(out: *u8, o: i64, cap: i64, s: *u8) -> i64 {
6 var k: i64 = 0
7 var p: i64 = o
8 while s[k] != (0 as u8) { if p < cap { out[p] = s[k]; p = p + 1 } k = k + 1 }
9 return p
10}
11func _wb_tmpl_put(out: *u8, o: i64, cap: i64, src: *u8, n: i64, raw: i64) -> i64 {
12 if raw == 1 {
13 var k: i64 = 0
14 var p: i64 = o
15 while k < n { if p < cap { out[p] = src[k]; p = p + 1 } k = k + 1 }
16 return p
17 }
18 return o + hs_escape(src, n, ((out as i64) + o) as *u8, cap - o)
19}
20func _wb_tmpl_one(kind: i64, pay: *u8, plen: i64, out: *u8, cap: i64) -> i64 {
21 if kind == 1 {
22 var o1: i64 = _wb_tmpl_cat(out, 0, cap, "<p>")
23 o1 = _wb_tmpl_put(out, o1, cap, pay, plen, 0)
24 o1 = _wb_tmpl_cat(out, o1, cap, "</p>")
25 return o1
26 }
27 if kind == 2 {
28 var o2: i64 = _wb_tmpl_cat(out, 0, cap, "<b>")
29 o2 = _wb_tmpl_put(out, o2, cap, pay, plen, 1)
30 o2 = _wb_tmpl_cat(out, o2, cap, "</b>")
31 return o2
32 }
33 return 0 - 1
34}