X-Git-Url: http://git.hcoop.net/clinton/parenscript.git/blobdiff_plain/97eb9b754ae4cb7cae36937de3ddbc363ddd37c0..a7b7afae9ae3bae282bcd941e098b8e6f5e6dd7f:/src/package.lisp diff --git a/src/package.lisp b/src/package.lisp dissimilarity index 85% index 98f7392..7eebfc7 100644 --- a/src/package.lisp +++ b/src/package.lisp @@ -1,150 +1,237 @@ -(in-package :cl-user) - -(defpackage :parenscript - (:use :common-lisp) - (:nicknames :js) - (:export - ;; addition js symbols - #:new - - ;; literals - #:t - #:nil - #:this - #:false - #:undefined - - ;; keywords - #:break - #:continue - - ;; array literals - #:array - #:list - #:aref - #:make-array - - ;; operators - #:! #:not #:~ - #:* #:/ #:% - #:+ #:- - #:<< #:>> - #:>>> - #:< #:> #:<= #:>= - #:in - #:eql #:== #:!= #:= - #:=== #:!== - #:& - #:^ - #:\| - #:\&\& #:and - #:\|\| #:or - #:>>= #:<<= - #:*= #:/= #:%= #:+= #:\&= #:^= #:\|= #:~= - #:++ #:-- - #:1+ #:1- - #:incf #:decf - - ;; body forms - #:progn - - ;; function definition - #:defun - #:lambda - - ;; object literals - #:create - #:slot-value - #:with-slots - - ;; macros - #:macrolet - #:symbol-macrolet - - ;; lisp eval - #:lisp - - ;; if - #:if - #:when - #:unless - - ;; single argument statements - #:return - #:throw - - ;; single argument expressions - #:delete - #:void - #:typeof - #:instanceof - #:new - - ;; assignment - #:setf - - ;; variables - #:defvar - #:let - - ;; iteration - #:do - #:dotimes - #:dolist - #:doeach - #:while - - ;; with - #:with - - ;; case - #:case - #:default - - ;; try throw catch - #:try - - ;; regex literals - #:regex - - ;; conditional compilation (IE) - #:cc-if - - ;; math library - #:floor - #:random - - ;; html generator for javascript - #:html - - ;; compiler - #:js-compile - #:js - #:js* - #:js-inline - #:js-inline* - #:js-file - #:js-script - #:js-to-strings - #:js-to-statement-strings - #:js-to-string - #:js-to-line - #:defjsmacro - #:defmacro/js - #:defmacro+js - #:import-macros-from-lisp - - ;; util - #:with-unique-js-names - #:gen-js-name - #:gen-js-name-string - - ;; CSS - #:css - #:css-to-string - #:css-inline - #:css-file - - #:compile-parenscript-file - #:compile-parenscript-file-to-string - )) +(in-package :cl-user) + +(eval-when (:compile-toplevel :load-toplevel :execute) + (defparameter *parenscript-lang-exports* + '( + ;; literals + #:t + #:f + #:true + #.(symbol-name 'nil) ; for case-sensitive Lisps like some versions of Allegro + #:this + #:false + #:undefined + + ;; keywords + #:break + #:continue + + ;; array literals + #:array + #:list + #:aref + #:make-array + + ;; operators + #:! #:not #:~ + #:* #:/ #:% + #:+ #:- + #:<< #:>> + #:>>> + #:< #:> #:<= #:>= + #:in + #:eql #:== #:!= #:= + #:=== #:!== + #:& + #:^ + #:\| + #:\&\& #:and + #:\|\| #:or + #:>>= #:<<= + #:*= #:/= #:%= #:+= #:\&= #:^= #:\|= #:~= + #:1+ #:1- + #:incf #:decf + + ;; body forms + #:progn + + ;; object literals + #:create + #:with-slots + + ;; macros + #:macrolet + #:symbol-macrolet + + ;; if + #:if + #:when + #:unless + + ;; single argument statements + #:return + #:throw + + ;; single argument expressions + #:delete + #:void + #:typeof + #:instanceof + #:new + + ;; assignment and binding + #:setf + #:defsetf + #:psetf + #:setq + #:psetq + #:simple-let* + #:simple-let + #:lexical-let* + #:lexical-let + #:let* + #:let + + ;; variables + #:var + #:defvar + + ;; iteration + #:labeled-for + #:for + #:for-in + #:while + #:do + #:do* + #:dotimes + #:dolist + #:doeach + + ;; with + #:with + + ;; case + #:switch + #:case + #:default + + ;; try throw catch + #:try + + ;; regex literals + #:regex + + ;; conditional compilation (IE) + #:cc-if + + ;; function definition + #:defun + #:lambda + + ;; lambda lists + #:&key + #:&rest + #:&body + #:&optional + #:&aux + #:&environment + #:&key-object + + ;; slot access + #:with-slots + #:slot-value + + ;; macros + #:macrolet + #:symbol-macrolet + #:define-symbol-macro + #:define-script-symbol-macro + #:defmacro + + ;; lisp eval + #:lisp + + ;; v v v STUFF WE SHOULD PROBABLY MOVE TO OTHER LIBS v v v + + ;; html generator for javascript + #:ps-html + + ;; utils + #:do-set-timeout + #:min + #:max + #:ceiling + #:abs + #:sin + #:cos + #:tan + #:acos + #:asin + #:atan + #:exp + #:log + #:floor + #:expt + #:sqrt + #:round + #:random + #:oddp + #:evenp + #:ignore-errors + #:concatenate + #:length + #:null + #:@ + + ;; js runtime utils + #:*ps-lisp-library* + #:mapcar + #:map-into + #:map + #:map-until + #:member + #:append + #:set-difference + )) + "All symbols considered part of the Parenscript language.") + +(defpackage :parenscript + (:use :common-lisp) + (:nicknames :js :ps) + #.(cons :export *parenscript-lang-exports*) + + ;;; symbols that form the interface to the Parenscript compiler + (:export + ;; compiler + #:compile-script + #:ps + #:ps-doc + #:ps* + #:ps-inline + #:ps-inline* + + ;; for parenscript macro definition within lisp + #:defpsmacro + #:defmacro/ps + #:defmacro+ps + #:import-macros-from-lisp + + ;; gensym + #:ps-gensym + #:with-ps-gensyms + #:*ps-gensym-counter* + + ;; naming and namespaces + #:ps-package-prefix + #:obfuscate-package + #:unobfuscate-package + + ;; printer + #:*js-string-delimiter* + #:*js-inline-string-delimiter* + #:*ps-print-pretty* + #:*indent-num-spaces* + + ;; deprecated interface + #:gen-js-name + #:with-unique-js-names + #:defjsmacro + #:js-compile + #:js-inline + #:js-inline* + #:js + #:js* + )) + +(defpackage :parenscript-special-forms + (:use))