aboutsummaryrefslogtreecommitdiff
path: root/luxc/src/lux/compiler/js/proc/common.clj
diff options
context:
space:
mode:
authorEduardo Julian2017-02-17 18:24:45 -0400
committerEduardo Julian2017-02-17 18:24:45 -0400
commit277747aee1b0b19e88a0e685299f278201737011 (patch)
tree51fca2d906d7d15f8acece3cafbf1231105bafae /luxc/src/lux/compiler/js/proc/common.clj
parentb0114f4871a6a2654fa2edc667a635a97ae76b19 (diff)
- Added more common procedures.
- Fixed some bugs in the type-checking of some common procedures. - Removed the "_name" field for generated classes. - Now compiling loops in JS. - Did some refactoring to the caching machinery. - Implemented binary, octal and hexadecimal encoding purely in Lux.
Diffstat (limited to '')
-rw-r--r--luxc/src/lux/compiler/js/proc/common.clj25
1 files changed, 20 insertions, 5 deletions
diff --git a/luxc/src/lux/compiler/js/proc/common.clj b/luxc/src/lux/compiler/js/proc/common.clj
index 23454914e..ee381add4 100644
--- a/luxc/src/lux/compiler/js/proc/common.clj
+++ b/luxc/src/lux/compiler/js/proc/common.clj
@@ -310,16 +310,28 @@
=replace-with (compile ?replace-with)]
(return (str "LuxRT.replaceAll(" (str =text "," =to-find "," =replace-with) ")"))))
-(defn ^:private compile-text-trim [compile ?values special-args]
- (|do [:let [(&/$Cons ?text (&/$Nil)) ?values]
- =text (compile ?text)]
- (return (str "(" =text ").trim()"))))
-
(defn ^:private compile-text-size [compile ?values special-args]
(|do [:let [(&/$Cons ?text (&/$Nil)) ?values]
=text (compile ?text)]
(return (str "LuxRT.fromNumberI64(" =text ".length" ")"))))
+(defn ^:private compile-text-char [compile ?values special-args]
+ (|do [:let [(&/$Cons ?text (&/$Cons ?idx (&/$Nil))) ?values]
+ =text (compile ?text)
+ =idx (compile ?idx)]
+ (return (str "LuxRT.textChar(" (str =text "," =idx) ")"))))
+
+(do-template [<name> <method>]
+ (defn <name> [compile ?values special-args]
+ (|do [:let [(&/$Cons ?text (&/$Nil)) ?values]
+ =text (compile ?text)]
+ (return (str "(" =text ")." <method> "()"))))
+
+ ^:private compile-text-trim "trim"
+ ^:private compile-text-upper-case "toUpperCase"
+ ^:private compile-text-lower-case "toLowerCase"
+ )
+
(defn ^:private compile-char-to-text [compile ?values special-args]
(|do [:let [(&/$Cons ?x (&/$Nil)) ?values]
=x (compile ?x)]
@@ -356,6 +368,9 @@
"size" (compile-text-size compile ?values special-args)
"replace-all" (compile-text-replace-all compile ?values special-args)
"trim" (compile-text-trim compile ?values special-args)
+ "char" (compile-text-char compile ?values special-args)
+ "upper-case" (compile-text-upper-case compile ?values special-args)
+ "lower-case" (compile-text-lower-case compile ?values special-args)
)
;; "bit"