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}