-
Notifications
You must be signed in to change notification settings - Fork 110
Small FFI piecies
vlad edited this page Dec 28, 2018
·
1 revision
(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"
(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"
(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"
(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)