code wiki / _hdl_build / nx_nishi_builder_seed.nx

nx_nishi_builder_seed.nx source

↩ module page · 52 lines · 5127 B

1// nx_nishi_builder_seed.nx -- TEACH the universal Nishi builder across domains (ad/web/game), then GROW each. 2// Demonstrates ONE builder, MANY domains: every emitter is sovereign-safe DATA (no <script/src=). Idempotent. 3import "nx_nishi_builder.nx" 4import "nx_syscalls.nx" 5 6func sb_p(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } 7func sb_i(v: i64) -> i64 { let t: *u8 = sys_mmap(24); var m: i64 = v; var k: i64 = 0; if m == 0 { t[0]=48 as u8; k=1 } while m>0 { t[k]=(48+(m%10)) as u8; m=m/10; k=k+1 } let o: *u8=sys_mmap(24); var w: i64=0; var q: i64=k-1; while q>=0 { o[w]=t[q]; w=w+1; q=q-1 } sys_write(1,o,w); return 0 } 8func sb_reg(domain: *u8, kind: *u8, id: *u8, label: *u8, tpl: *u8) -> i64 { 9 let r: i64 = nb_register(NB_PATH, domain, kind, id, label, tpl) 10 if r == 1 { sb_p(" + " as *u8); sb_p(domain); sb_p("/" as *u8); sb_p(kind); sb_p("/" as *u8); sb_p(id); sb_p("\n" as *u8) } 11 return r 12} 13func sb_domain(d: *u8) -> i64 { sb_p(" " as *u8); sb_p(d); sb_p(" emitters = " as *u8); sb_i(nb_count(NB_PATH, d, "*" as *u8)); sb_p("\n" as *u8); return 0 } 14 15func main(argc: i64, argv: *i64) -> i64 { 16 sb_p("=== nx_nishi_builder: ONE builder, MANY domains (websites, games, ads) ===\n" as *u8) 17 18 sb_p("TEACH domain=ad (the closed-loop banner emitters):\n" as *u8) 19 sb_reg("ad" as *u8, "size" as *u8, "leaderboard" as *u8, "Leaderboard 728x90" as *u8, "728x90" as *u8) 20 sb_reg("ad" as *u8, "theme" as *u8, "ocean" as *u8, "Ocean" as *u8, "#06283d|#eaf6ff|#1b98e0|#062033" as *u8) 21 sb_reg("ad" as *u8, "accent" as *u8, "star" as *u8, "Star" as *u8, "<svg class='nb-logo' viewBox='0 0 24 24'><path fill='{ACCENT}' d='M12 2l2.9 6.3z'/></svg>" as *u8) 22 sb_reg("ad" as *u8, "animation" as *u8, "slide" as *u8, "Slide-in" as *u8, "@keyframes nbsl-{S}{from{opacity:.3}to{opacity:1}}.nb-{S} .nb-head{animation:nbsl-{S} .6s}" as *u8) 23 24 sb_p("TEACH domain=web (sovereign HTML/CSS components, no JS):\n" as *u8) 25 sb_reg("web" as *u8, "section" as *u8, "hero" as *u8, "Hero section" as *u8, "<section class='hero'><h1>{TITLE}</h1><p>{SUB}</p><a class='btn' href='{LINK}'>{CTA}</a></section>" as *u8) 26 sb_reg("web" as *u8, "section" as *u8, "card" as *u8, "Content card" as *u8, "<article class='card'><h3>{TITLE}</h3><p>{BODY}</p></article>" as *u8) 27 sb_reg("web" as *u8, "nav" as *u8, "topbar" as *u8, "Top navbar" as *u8, "<nav class='topbar'><a class='brand' href='/'>{BRAND}</a><div class='links'>{LINKS}</div></nav>" as *u8) 28 sb_reg("web" as *u8, "button" as *u8, "cta" as *u8, "CTA button" as *u8, "<a class='btn' href='{LINK}'>{CTA}</a>" as *u8) 29 sb_reg("web" as *u8, "layout" as *u8, "grid" as *u8, "Responsive grid" as *u8, "<div style='display:grid;grid-template-columns:repeat({COLS},minmax(0,1fr));gap:16px'>{CHILDREN}</div>" as *u8) 30 31 sb_p("TEACH domain=game (data-driven specs, runtime LLM-free):\n" as *u8) 32 sb_reg("game" as *u8, "sprite" as *u8, "coin" as *u8, "Coin sprite" as *u8, "16x16|gold|circle-shine|spin4" as *u8) 33 sb_reg("game" as *u8, "tilemap" as *u8, "overworld" as *u8, "Overworld tiles" as *u8, "32x32|grass,dirt,water,stone|autotile" as *u8) 34 sb_reg("game" as *u8, "mechanic" as *u8, "platform-jump" as *u8, "Platform jump" as *u8, "impulse=12|gravity=0.6|coyote=80|jumpbuffer=120" as *u8) 35 sb_reg("game" as *u8, "entity" as *u8, "patroller" as *u8, "Patrol enemy" as *u8, "hp=3|speed=2|ai=patrol|drop=coin" as *u8) 36 sb_p("---- catalog after teach ----\n" as *u8) 37 sb_domain("ad" as *u8); sb_domain("web" as *u8); sb_domain("game" as *u8) 38 39 sb_p("GROW (new emitters in each domain -> the builder grows across the whole ecosystem):\n" as *u8) 40 sb_reg("web" as *u8, "section" as *u8, "pricing" as *u8, "Pricing table" as *u8, "<section class='pricing'><h2>{TITLE}</h2><div class='tiers'>{TIERS}</div></section>" as *u8) 41 sb_reg("web" as *u8, "section" as *u8, "footer" as *u8, "Site footer" as *u8, "<footer class='ftr'><p>{COPY}</p><nav>{LINKS}</nav></footer>" as *u8) 42 sb_reg("web" as *u8, "form" as *u8, "contact" as *u8, "Contact form" as *u8, "<form method='post' action='{ACTION}'><input name='name'><input name='email'><button>{CTA}</button></form>" as *u8) 43 sb_reg("game" as *u8, "mechanic" as *u8, "dash" as *u8, "Air dash" as *u8, "speed=20|duration=140|cooldown=400|iframes=80" as *u8) 44 sb_reg("game" as *u8, "sprite" as *u8, "hero" as *u8, "Hero sprite" as *u8, "24x32|blue,skin,brown|walk6,idle2,jump1" as *u8) 45 sb_reg("game" as *u8, "level" as *u8, "1-1" as *u8, "First level" as *u8, "overworld|coin*12|patroller*3|exit-right" as *u8) 46 sb_p("---- catalog after grow ----\n" as *u8) 47 sb_domain("ad" as *u8); sb_domain("web" as *u8); sb_domain("game" as *u8) 48 let total: i64 = nb_count(NB_PATH, "ad" as *u8, "*" as *u8) + nb_count(NB_PATH, "web" as *u8, "*" as *u8) + nb_count(NB_PATH, "game" as *u8, "*" as *u8) 49 sb_p("TOTAL emitters in THE NISHI BUILDER = " as *u8); sb_i(total) 50 sb_p(" across 3 domains (ad/web/game), all sovereign-safe, idempotent. Every new capability calls nb_register.\n" as *u8) 51 sys_exit(0); return 0 52}