[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 59/99: Implement built-in string procedures.
From: |
Christopher Allan Webber |
Subject: |
[Guile-commits] 59/99: Implement built-in string procedures. |
Date: |
Sun, 10 Oct 2021 21:51:01 -0400 (EDT) |
cwebber pushed a commit to branch compile-to-js-merge
in repository guile.
commit 2273eb4d061d6c2d17675ef773b0568f2482ee58
Author: Ian Price <ianprice90@googlemail.com>
AuthorDate: Wed Aug 2 21:17:22 2017 +0100
Implement built-in string procedures.
* module/language/js-il/runtime.js
(string-append): Extend to more than 2 arguments.
(string-join): New procedure.
---
module/language/js-il/runtime.js | 28 ++++++++++++++++++++++++++--
1 file changed, 26 insertions(+), 2 deletions(-)
diff --git a/module/language/js-il/runtime.js b/module/language/js-il/runtime.js
index 1107282..c6d70cb 100644
--- a/module/language/js-il/runtime.js
+++ b/module/language/js-il/runtime.js
@@ -797,8 +797,32 @@ def_guile0("string=?", function (self, cont, s1, s2) {
});
def_guile0("string-append", function (self, cont, s1, s2) {
- var s = new scheme.String(s1.s + s2.s);
- return cont(s);
+ var s = "";
+
+ for (var i = 2; i < arguments.length; i++) {
+ s += arguments[i].s;
+ }
+
+ //console.log("sap", s1, s2, arguments.length);
+ return cont(new scheme.String(s));
+});
+
+def_guile0("string-join", function (self, cont, strings) {
+ var s = "";
+
+ while (!scheme.is_true(scheme.primitives["null?"](strings))) {
+ if (scheme.is_true(scheme.primitives["pair?"](strings))) {
+ s += strings.car.s;
+ strings = strings.cdr;
+ } else {
+ console.log("string-join bad");
+ not_implemented_yet();
+ }
+ }
+
+ return cont(new scheme.String(s));
+});
+
});
// Structs
- [Guile-commits] 34/99: Change function type representation, (continued)
- [Guile-commits] 34/99: Change function type representation, Christopher Allan Webber, 2021/10/10
- [Guile-commits] 33/99: Change program type representation, Christopher Allan Webber, 2021/10/10
- [Guile-commits] 31/99: Different types for Continuation and Variable identifiers, Christopher Allan Webber, 2021/10/10
- [Guile-commits] 29/99: Use scheme.frame.Prompt objects for prompts on dynstack, Christopher Allan Webber, 2021/10/10
- [Guile-commits] 30/99: Implement fluid primitives, Christopher Allan Webber, 2021/10/10
- [Guile-commits] 36/99: Handle more identifier characters, Christopher Allan Webber, 2021/10/10
- [Guile-commits] 47/99: Add some primitives to runtime.js, Christopher Allan Webber, 2021/10/10
- [Guile-commits] 50/99: Add more variables to no-values-primitives, Christopher Allan Webber, 2021/10/10
- [Guile-commits] 55/99: Implement immediate version of vector primitives., Christopher Allan Webber, 2021/10/10
- [Guile-commits] 62/99: scm_struct_init skips hidden fields., Christopher Allan Webber, 2021/10/10
- [Guile-commits] 59/99: Implement built-in string procedures.,
Christopher Allan Webber <=
- [Guile-commits] 60/99: Implement struct built-ins., Christopher Allan Webber, 2021/10/10
- [Guile-commits] 70/99: Add `guild jslink' to bundle JS programs, Christopher Allan Webber, 2021/10/10
- [Guile-commits] 75/99: scheme.HashTable uses ES6 Map objects, Christopher Allan Webber, 2021/10/10
- [Guile-commits] 41/99: Fix build of (language cps compile-js), Christopher Allan Webber, 2021/10/10
- [Guile-commits] 45/99: Add #:js-inline? and #:js-flatten? debugging options, Christopher Allan Webber, 2021/10/10
- [Guile-commits] 54/99: Implement structs in runtime.js, Christopher Allan Webber, 2021/10/10
- [Guile-commits] 25/99: Implement call-with-values, Christopher Allan Webber, 2021/10/10
- [Guile-commits] 52/99: Add macro type in runtime.js, Christopher Allan Webber, 2021/10/10
- [Guile-commits] 51/99: Implement cached-module-box, Christopher Allan Webber, 2021/10/10
- [Guile-commits] 48/99: Rebuild nested scopes for js continuations, Christopher Allan Webber, 2021/10/10