Skip to content
vlad edited this page Dec 28, 2018 · 1 revision

While the extended format function under development...

Radix conversion for pretty print

(print (let ((var 32))
         ((jscl::oget var "toString") 16)))

;=> "20"

Or

(defmacro to-radix (var radix)
  `((jscl::oget ,var "toString") ,radix))
(to-radix 32 2)
;=> "100000"

(to-radix 32 8)
;=> "40"

(to-radix 32 16)
;=> "20"

Number pretty format

(let ()
  (labels
      ((make-number (value) 
                    (jscl::make-new #j:Number value))
       (float-Exponential (value &optional (fraction 5))
                          ((jscl::oget (make-Number value) "toExponential") fraction))
       (number-to-fixed (value &optional (digits 0))
                        ((jscl::oget  (make-Number value) "toFixed") digits)))
    (print (float-exponential 123.1 2))
    (print (number-to-fixed 123.012345 2))))

;=> "1.23e+2"
;=> "123.01"

String operations

(defmacro strop (string op &body args)
`((jscl::oget (jscl::lisp-to-js ,string) ,op) ,@args))


(strop "abcdef" "substr" 1 3)
"bcd"

(strop "abcdef" "substr" 1 4)
"bcde"

(strop "abcdef" "substr" 2 4)
"cdef"

(strop "abcdef" "substr" 3 4)
"def"

Array operations

(let ((v1 #(mediane)))
  ((jscl::oget v1 "push") 'right)
  ((jscl::oget v1 "unshift") 'left)
  (list ((jscl::oget v1 "indexOf") 'mediane)
        ((jscl::oget v1 "indexOf") 'left)
        ((jscl::oget v1 "indexOf") 'right)))

;=> (1 0 2)

(let ((stor #()))
  (labels ((doit (op val)
                 ((jscl::oget stor op) val)))
    (doit "push" 1)
    (doit "push" '(2 3 4))
    (doit "push" 5)
    (print stor)))

;=> #(1 (2 3 4) 5)
Clone this wiki locally