aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/rosa/state.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-05-20 03:14:11 +0900
committerOphestra <cat@gensokyo.uk>2026-05-20 03:33:15 +0900
commitef414ab01a28b61ef01766c3dd28ed2342f5ab75 (patch)
tree314a8f471c8c052da0936549ecac2d052f52932a /internal/rosa/state.go
parent96abf266dd8bbbb4ea65c74a3f84f2461a6021a7 (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.go43
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) {