diff --git a/js-assembler/runtime-src/baselib-primitives.js b/js-assembler/runtime-src/baselib-primitives.js index 793b7a1..4f6a149 100644 --- a/js-assembler/runtime-src/baselib-primitives.js +++ b/js-assembler/runtime-src/baselib-primitives.js @@ -854,6 +854,92 @@ + + + + + + + + + + + + installPrimitiveProcedure( + 'string-ci=?', + baselib.arity.makeArityAtLeast(1), + function (MACHINE) { + var s = checkString(MACHINE, 'string-ci=?', 0).toString().toUpperCase(); + var i; + for (i = 1; i < MACHINE.argcount; i++) { + if (s !== checkString(MACHINE, 'string-ci=?', i).toString().toUpperCase()) { + return false; + } + } + return true; + }); + + + installPrimitiveProcedure( + 'string-ci<=?', + baselib.arity.makeArityAtLeast(1), + function (MACHINE) { + var s = checkString(MACHINE, 'string-ci<=?', 0).toString().toUpperCase(); + var i; + for (i = 1; i < MACHINE.argcount; i++) { + if (! (s <= checkString(MACHINE, 'string-ci<=?', i).toString().toUpperCase())) { + return false; + } + } + return true; + }); + + installPrimitiveProcedure( + 'string-ci=?', + baselib.arity.makeArityAtLeast(1), + function (MACHINE) { + var s = checkString(MACHINE, 'string-ci>=?', 0).toString().toUpperCase(); + var i; + for (i = 1; i < MACHINE.argcount; i++) { + if (! (s >= checkString(MACHINE, 'string-ci>=?', i).toString().toUpperCase())) { + return false; + } + } + return true; + }); + + installPrimitiveProcedure( + 'string-ci>?', + baselib.arity.makeArityAtLeast(1), + function (MACHINE) { + var s = checkString(MACHINE, 'string-ci>?', 0).toString().toUpperCase(); + var i; + for (i = 1; i < MACHINE.argcount; i++) { + if (! (s > checkString(MACHINE, 'string-ci>?', i).toString().toUpperCase())) { + return false; + } + } + return true; + }); + + + + + installPrimitiveProcedure( 'string-append', baselib.arity.makeArityAtLeast(0), diff --git a/lang/kernel.rkt b/lang/kernel.rkt index 57826ab..d58de09 100644 --- a/lang/kernel.rkt +++ b/lang/kernel.rkt @@ -365,15 +365,16 @@ memq string-length string-ref string=? -;; string-ci=? -;; string? -;; string<=? -;; string>=? -;; string-ci? -;; string-ci<=? -;; string-ci>=? + string? + string<=? + string>=? + string-ci=? + string-ci? + string-ci<=? + string-ci>=? + substring string-append string->list diff --git a/tests/more-tests/string-tests.rkt b/tests/more-tests/string-tests.rkt index 0881717..9474808 100644 --- a/tests/more-tests/string-tests.rkt +++ b/tests/more-tests/string-tests.rkt @@ -30,3 +30,10 @@ (string->list "xyz") (string->list "x") (string->list "") + + +(string