code wiki / _hdl_build / _pe_blockr.nx
_pe_blockr.nx source
↩ module page · 58 lines · 2297 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 _pe_blockr_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 _pe_blockr_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 _pe_blockr_one(kind: i64, pay: *u8, plen: i64, out: *u8, cap: i64) -> i64 {
21 if kind == 1 {
22 var o1: i64 = _pe_blockr_cat(out, 0, cap, "<div class=\"blk\">")
23 o1 = _pe_blockr_put(out, o1, cap, pay, plen, 1)
24 o1 = _pe_blockr_cat(out, o1, cap, "</div>")
25 return o1
26 }
27 if kind == 2 {
28 var o2: i64 = _pe_blockr_cat(out, 0, cap, "<h2>")
29 o2 = _pe_blockr_put(out, o2, cap, pay, plen, 0)
30 o2 = _pe_blockr_cat(out, o2, cap, "</h2>")
31 return o2
32 }
33 if kind == 3 {
34 var o3: i64 = _pe_blockr_cat(out, 0, cap, "<h3>")
35 o3 = _pe_blockr_put(out, o3, cap, pay, plen, 0)
36 o3 = _pe_blockr_cat(out, o3, cap, "</h3>")
37 return o3
38 }
39 if kind == 4 {
40 var o4: i64 = _pe_blockr_cat(out, 0, cap, "<blockquote>")
41 o4 = _pe_blockr_put(out, o4, cap, pay, plen, 1)
42 o4 = _pe_blockr_cat(out, o4, cap, "</blockquote>")
43 return o4
44 }
45 if kind == 5 {
46 var sp5: i64 = 0 - 1
47 var si5: i64 = 0
48 while si5 < plen { if pay[si5] == (124 as u8) { if sp5 < 0 { sp5 = si5 } } si5 = si5 + 1 }
49 if sp5 < 0 { return 0 - 1 }
50 var o5: i64 = _pe_blockr_cat(out, 0, cap, "<img src=\"")
51 o5 = _pe_blockr_put(out, o5, cap, pay, sp5, 0)
52 o5 = _pe_blockr_cat(out, o5, cap, "\" alt=\"")
53 o5 = _pe_blockr_put(out, o5, cap, ((pay as i64) + sp5 + 1) as *u8, plen - sp5 - 1, 0)
54 o5 = _pe_blockr_cat(out, o5, cap, "\">")
55 return o5
56 }
57 return 0 - 1
58}