diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-05-20 03:14:11 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-05-20 03:33:15 +0900 |
| commit | ef414ab01a28b61ef01766c3dd28ed2342f5ab75 (patch) | |
| tree | 314a8f471c8c052da0936549ecac2d052f52932a /internal/rosa/state.go | |
| parent | 96abf266dd8bbbb4ea65c74a3f84f2461a6021a7 (diff) | |
internal/rosa/package: migrate many libraries
This also adds more string helpers.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/rosa/state.go')
| -rw-r--r-- | internal/rosa/state.go | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/internal/rosa/state.go b/internal/rosa/state.go index ed1124fb..0f32ab55 100644 --- a/internal/rosa/state.go +++ b/internal/rosa/state.go @@ -477,6 +477,49 @@ func (s *S) getFrame() azalea.Frame { // library functions + k("replace"): {F: func( + args azalea.FArgs, + ) (v any, set bool, err error) { + var _s, _old, _new string + var n int + if err = args.Apply(map[unique.Handle[azalea.Ident]]any{ + k("s"): &_s, + k("old"): &_old, + k("new"): &_new, + k("n"): &n, + }); err != nil { + return + } + + if n < 0 { + n = 0 + } else if n == 0 { + n = -1 + } + + v = strings.Replace(_s, _old, _new, n) + set = true + return + }}, + + k("slice"): {F: func( + args azalea.FArgs, + ) (v any, set bool, err error) { + var elems []string + var start, end int64 + if err = args.Apply(map[unique.Handle[azalea.Ident]]any{ + k("elems"): &elems, + k("start"): &start, + k("end"): &end, + }); err != nil { + return + } + + v = elems[start:end] + set = true + return + }}, + k("join"): {F: func( args azalea.FArgs, ) (v any, set bool, err error) { |
