From ef414ab01a28b61ef01766c3dd28ed2342f5ab75 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Wed, 20 May 2026 03:14:11 +0900 Subject: internal/rosa/package: migrate many libraries This also adds more string helpers. Signed-off-by: Ophestra --- internal/rosa/state.go | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'internal/rosa/state.go') 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) { -- cgit v1.3.1