From b90e206280859d2069c5ce02faf39c1a70202a08 Mon Sep 17 00:00:00 2001 From: ubq323 Date: Sat, 17 Aug 2024 21:31:12 +0100 Subject: add schars-ascii function --- lib.c | 10 ++++++++++ tests/schars_ascii.bth | 1 + tests/schars_ascii.out | 2 ++ 3 files changed, 13 insertions(+) create mode 100644 tests/schars_ascii.bth create mode 100644 tests/schars_ascii.out diff --git a/lib.c b/lib.c index f4e9758..813703c 100644 --- a/lib.c +++ b/lib.c @@ -136,6 +136,15 @@ static Val fn_ssplit(State *S, int nargs, Val *args) { return VAL_OBJ(out); } +static Val fn_schars_ascii(State *S, int nargs, Val *args) { + CHECK(nargs==1, "need exactly 1 args for schars-ascii"); + CHECK(IS_STRING(args[0]), "need string arg for schars-ascii"); + ObjString *s = AS_STRING(args[0]); + ObjArr *a = objarr_new(S); + for (int i = 0; i < s->len; i++) + objarr_append(S, a, VAL_OBJ(objstring_copy(S, &s->d[i], 1))); + return VAL_OBJ(a); +} // math static Val fn_sin(State *S, int nargs, Val *args) { @@ -188,6 +197,7 @@ static BuiltinFunc builtin_funcs[] = { { ",", fn_pend }, { "s,", fn_spend }, { "ssplit", fn_ssplit }, + { "schars-ascii", fn_schars_ascii }, { "sin", fn_sin }, { "cos", fn_cos }, diff --git a/tests/schars_ascii.bth b/tests/schars_ascii.bth new file mode 100644 index 0000000..402017b --- /dev/null +++ b/tests/schars_ascii.bth @@ -0,0 +1 @@ +(say (schars-ascii "hello world\n")) diff --git a/tests/schars_ascii.out b/tests/schars_ascii.out new file mode 100644 index 0000000..b00b046 --- /dev/null +++ b/tests/schars_ascii.out @@ -0,0 +1,2 @@ +[h e l l o w o r l d +] -- cgit v1.2.3