(:module :runtime
:components ((:file "ps-runtime-lib"))
:depends-on (:src)))
- :depends-on (:cl-ppcre :anaphora))
+ :depends-on (:cl-ppcre :anaphora :split-sequence))
(defmethod asdf:perform :after ((op asdf:load-op) (system (eql (asdf:find-system :parenscript))))
(pushnew :parenscript cl:*features*))
(defmethod ps-compile ((form character))
(ps-compile (string form)))
+(defun compound-symbol-p (symbol)
+ (let ((split (split-sequence:split-sequence #\. (symbol-name symbol))))
+ (break "~A = ~A" symbol split)
+ (if (cdr split)
+ (reduce
+ (lambda (&optional slot-name object-exp)
+ `(js:slot-value ,object-exp ,(make-symbol slot-name)))
+ (reverse (cddr split))
+ :initial-value `(slot-value
+ (js:variable ,(ps-macroexpand
+ (intern (car split)
+ (symbol-package symbol))))
+ ,(make-symbol (cadr split)))
+ :from-end t)
+ nil)))
+
(defmethod ps-compile ((symbol symbol))
(multiple-value-bind (expansion expanded?)
(ps-macroexpand symbol)