diff options
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) { |
