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}