selfhost/runtime: Stage 0-1 runner + MIR JSON loader (summary) with trace; compiler: scopebox/loopform prepass wiring (flags, child args); libs: add P1 standard boxes (console/string/array/map) as thin wrappers; runner: pass --box-pref via env; ops_calls dispatcher skeleton; docs: selfhost executor roadmap + scopebox/loopform notes; smokes: selfhost runner + identity prepasses; CURRENT_TASK: update plan and box lib schedule
This commit is contained in:
39
apps/lib/boxes/string_std.nyash
Normal file
39
apps/lib/boxes/string_std.nyash
Normal file
@ -0,0 +1,39 @@
|
||||
// StringStd — minimal standard string helpers (commonized API)
|
||||
|
||||
static box StringStd {
|
||||
length(s) {
|
||||
if s == null { return 0 }
|
||||
return s.length()
|
||||
}
|
||||
substring(s, start, end) {
|
||||
if s == null { return "" }
|
||||
if start == null { start = 0 }
|
||||
if end == null { end = s.length() }
|
||||
return s.substring(start, end)
|
||||
}
|
||||
indexOf(s, needle, start) {
|
||||
if s == null { return -1 }
|
||||
if needle == null { needle = "" }
|
||||
if start == null { return s.indexOf(needle) }
|
||||
return s.indexOf(needle, start)
|
||||
}
|
||||
lastIndexOf(s, needle, start) {
|
||||
if s == null { return -1 }
|
||||
if needle == null { needle = "" }
|
||||
if start == null { return s.lastIndexOf(needle) }
|
||||
return s.lastIndexOf(needle, start)
|
||||
}
|
||||
esc_json(s) {
|
||||
if s == null { return "" }
|
||||
local out = ""
|
||||
local i = 0
|
||||
local n = s.length()
|
||||
loop(i < n) {
|
||||
local ch = s.substring(i, i+1)
|
||||
if ch == "\\" { out = out + "\\\\" } else { if ch == "\"" { out = out + "\\\"" } else { out = out + ch } }
|
||||
i = i + 1
|
||||
}
|
||||
return out
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user