1 ;; SPDX-License-Identifier: BSD-3-Clause
3 (in-package #:parenscript
)
4 (in-readtable :parenscript
)
6 ;; These are convenience packages that export JS and browser DOM
7 ;; symbols. If you :use the packages in a package FOO and then
8 ;; obfuscate FOO, it will prevent the JS symbols from getting
11 ;; For most web development tasks, you want to import PS-JS-SYMBOLS,
12 ;; PS-WINDOW-WD-SYMBOLS (which includes DOM level 2 and the w3c Window
13 ;; working draft), and possibly the PS-DOM-NONSTANDARD-SYMBOLS.
15 (defun re-export-symbols (from-package to-package
)
16 (do-external-symbols (symbol from-package
)
17 (multiple-value-bind (cl-symbol type
) (find-symbol (symbol-name symbol
) '#:cl
)
18 (when (eq type
:external
)
19 (shadowing-import cl-symbol from-package
)))
20 (shadowing-import symbol to-package
)
21 (export (list symbol
) to-package
)))
23 (defpackage #:ps-js-symbols
24 (:documentation
"JavaScript standard function and property names.")
27 #:encode-u-r-i-component
#:encodeURIComponent
39 (re-export-symbols '#:ps-js-symbols
'#:parenscript
)
41 (defpackage #:ps-dom1-symbols
42 (:documentation
"DOM Level 1 symbols.")
47 #:has-feature
#:hasFeature
53 #:document-element
#:documentElement
55 #:create-element
#:createElement
56 #:create-document-fragment
#:createDocumentElement
57 #:create-text-node
#:createTextNode
58 #:create-comment
#:createComment
59 #:create-c-d-a-t-a-section
#:createCDATASection
60 #:create-processing-instruction
#:createProcessingInstruction
61 #:create-attribute
#:createAttribute
62 #:create-entity-reference
#:createEntityReference
63 #:get-elements-by-tag-name
#:getElementsByTagName
67 #:node-name
#:nodeName
68 #:node-value
#:nodeValue
69 #:node-type
#:nodeType
70 #:parent-node
#:parentNode
71 #:child-nodes
#:childNodes
72 #:first-child
#:firstChild
73 #:last-child
#:lastChild
74 #:previous-sibling
#:previousSibling
75 #:next-sibling
#:nextSibling
77 #:owner-document
#:ownerDocument
79 #:insert-before
#:insertBefore
80 #:replace-child
#:replaceChild
81 #:remove-child
#:removeChild
82 #:append-child
#:appendChild
83 #:has-child-nodes
#:hasChildNodes
84 #:clone-node
#:cloneNode
94 #:get-named-item
#:getNamedItem
95 #:set-named-item
#:setNamedItem
96 #:remove-named-item
#:removeNamedItem
106 #:substring-data
#:substringData
107 #:append-data
#:appendData
108 #:insert-data
#:insertData
109 #:delete-data
#:deleteData
110 #:replace-data
#:replaceData
122 #:get-attribute
#:getAttribute
123 #:set-attribute
#:setAttribute
124 #:remove-attribute
#:removeAttribute
125 #:get-attribute-node
#:getAttributeNode
126 #:set-attribute-node
#:setAttributeNode
127 #:remove-attribute-node
#:removeAttributeNode
128 #:get-elements-by-tag-name
#:getElementsByTagName
133 #:split-text
#:splitText
135 ;;; Level 1 extended interfaces (XML)
144 #:public-id
#:publicId
145 #:system-id
#:systemId
149 #:public-id
#:publicId
150 #:system-id
#:systemId
151 #:notation-name
#:notationName
153 ;; processing instruction
159 ;; HTMLcollection/live NodeList
164 #:named-item
#:namedItem
185 #:get-element-by-id
#:getElementById
186 #:get-elements-by-name
#:getElementsByName
188 ;; generic HTML element
194 #:class-name
#:className
196 ;; HTML document root
223 #:http-equiv
#:httpEquiv
257 #:accept-charset
#:acceptCharset
269 #:selected-index
#:selectedIndex
278 #:tab-index
#:tabIndex
293 #:default-selected
#:defaultSelected
303 #:default-value
#:defaultValue
304 #:default-checked
#:defaultChecked
307 #:access-key
#:accessKey
312 #:max-length
#:maxLength
314 #:read-only
#:readOnly
317 #:tab-index
#:tabIndex
329 #:default-value
#:defaultValue
331 #:access-key
#:accessKey
335 #:read-only
#:readOnly
337 #:tab-index
#:tabIndex
348 #:access-key
#:accessKey
351 #:tab-index
#:tabIndex
358 #:access-key
#:accessKey
368 #:access-key
#:accessKey
395 ;; div, p, and h1/h2/hn
423 #:date-time
#:dateTime
427 #:access-key
#:accessKey
436 #:tab-index
#:tabIndex
453 #:long-desc
#:longDesc
466 #:code-base
#:codeBase
467 #:code-type
#:codeType
474 #:tab-index
#:tabIndex
485 #:value-type
#:valueType
493 #:code-base
#:codeBase
508 #:access-key
#:accessKey
514 #:tab-index
#:tabIndex
537 #:cell-padding
#:cellPadding
538 #:cell-spacing
#:cellSpacing
544 #:create-t-head
#:createTHead
545 #:delete-t-head
#:deleteTHead
546 #:create-t-foot
#:createTFoot
547 #:delete-t-foot
#:deleteTFoot
548 #:create-caption
#:createCaption
549 #:delete-caption
#:deleteCaption
550 #:insert-row
#:insertRow
551 #:delete-row
#:deleteRow
566 ;; thead, tfoot, tbody
574 #:insert-row
#:insertRow
575 #:delete-row
#:deleteRow
579 #:row-index
#:rowIndex
580 #:section-row-index
#:sectionRowIndex
588 #:insert-cell
#:insertCell
589 #:delete-cell
#:deleteCell
593 #:cell-index
#:cellIndex
616 #:frame-border
#:frameBorder
617 #:long-desc
#:longDesc
618 #:margin-height
#:marginHeight
619 #:margin-width
#:marginWidth
621 #:no-resize
#:noResize
628 #:frame-border
#:frameBorder
630 #:long-desc
#:longDesc
631 #:margin-height
#:marginHeight
632 #:margin-width
#:marginWidth
639 (defpackage #:ps-dom2-symbols
640 (:documentation
"DOM Level 2 symbols. Includes DOM Level 1 symbols.")
645 #:create-document
#:createDocument
646 #:create-document-type
#:createDocumentType
648 ;; document interface
650 #:create-attribute-n-s
#:createAttributeNS
651 #:create-element-n-s
#:createElementNS
652 #:get-element-by-id
#:getElementById
653 #:get-elements-by-tag-name-n-s
#:getElementsByTagNameNS
654 #:import-node
#:importNode
658 #:local-name
#:localName
659 #:namespace-u-r-i
#:namespaceURI
662 #:is-supported
#:isSupported
666 #:get-named-item-n-s
#:getNamedItemNS
667 #:remove-named-item-n-s
#:removeNamedItermNS
668 #:set-named-item-n-s
#:setNamedItemNS
672 #:get-attribute-n-s
#:getAttributeNS
673 #:get-attribute-node-n-s
#:getAttributeNodeNS
674 #:get-elements-by-tag-name-n-s
#:getElementsByTagNameNS
675 #:has-attribute-n-s
#:hasAttributeNS
676 #:remove-attribute-n-s
#:removeAttributeNS
677 #:set-attribute-n-s
#:setAttributeNS
678 #:set-attribute-node-n-s
#:setAttributeNodeNS
680 ;;; Level 2 extended interfaces
683 #:internal-subset
#:internalSubset
684 #:public-id
#:publicId
685 #:system-id
#:systemId
688 ;; object, frame, iframe
690 #:content-document
#:contentDocument
698 #:owner-node
#:ownerNode
699 #:parent-style-sheet
#:parenStyleSheet
706 #:media-text
#:mediaText
708 #:append-medium
#:appendMedium
709 #:delete-medium
#:deleteMedium
718 #:style-sheets
#:styleSheets
723 #:css-rules
#:cssRules
724 #:owner-rule
#:ownerRule
726 #:delete-rule
#:deleteRule
727 #:insert-rule
#:insertRule
732 #:parent-rule
#:parentRule
733 #:parent-style-sheet
#:parentStyleSheet
738 #:selector-text
#:selectorText
743 #:css-rules
#:cssRules
746 #:delete-rule
#:deleteRule
747 #:insert-rule
#:insertRule
753 #:style-sheet
#:styleSheet
759 ;; css style declaration
763 #:parent-rule
#:parentRule
765 #:get-property-c-s-s-value
#:getPropertyCSSValue
766 #:get-property-priority
#:getPropertyPriority
767 #:get-property-value
#:getPropertyValue
769 #:remove-property
#:removeProperty
770 #:set-property
#:setProperty
775 #:css-value-type
#:cssValueType
777 ;; css primitive value
779 #:primitive-type
#:primitiveType
781 #:get-counter-value
#:getCounterValue
782 #:get-float-value
#:getFloatValue
783 #:get-r-g-b-color-value
#:getRGBColorValue
784 #:get-rect-value
#:getRectValue
785 #:get-string-value
#:getStringValue
786 #:set-float-value
#:setFloatValue
787 #:set-string-value
#:setStringValue
805 #:list-style
#:listStyle
810 #:get-computed-style
#:getComputedStyle
814 #:get-override-style
#:getOverrideStyle
818 #:create-c-s-s-style-sheet
#:createCSSStyleSheet
820 ;;; CSS 2.0 extended interface
824 #:background-attachment
#:backgroundAttachment
825 #:background-color
#:backgroundColor
826 #:background-image
#:backgroundImage
827 #:background-position
#:backgroundPosition
828 #:background-repeat
#:backgroundRepeat
830 #:border-bottom
#:borderBottom
831 #:border-bottom-color
#:borderBottomColor
832 #:border-bottom-style
#:borderBottomStyle
833 #:border-bottom-width
#:borderBottomWidth
834 #:border-collapse
#:borderCollapse
835 #:border-color
#:borderColor
836 #:border-left
#:borderLeft
837 #:border-left-color
#:borderLeftColor
838 #:border-left-style
#:borderLeftStyle
839 #:border-left-width
#:borderLeftWidth
840 #:border-right
#:borderRight
841 #:border-right-color
#:borderRightColor
842 #:border-right-style
#:borderRightStyle
843 #:border-right-width
#:borderRightWidth
844 #:border-spacing
#:borderSpacing
845 #:border-style
#:borderStyle
846 #:border-top
#:borderTop
847 #:border-top-color
#:borderTopColor
848 #:border-top-style
#:borderTopStyle
849 #:border-top-width
#:borderTopWidth
850 #:border-width
#:borderWidth
852 #:caption-side
#:captionSide
857 #:counter-increment
#:counterIncrement
858 #:counter-reset
#:counterReset
859 #:css-float
#:cssFloat
861 #:cue-after
#:cueAfter
862 #:cue-before
#:cueBefore
867 #:empty-cells
#:emptyCells
869 #:font-family
#:fontFamily
870 #:font-size
#:fontSize
871 #:font-size-adjust
#:fontSizeAdjust
872 #:font-stretch
#:fontStretch
873 #:font-style
#:fontStyle
874 #:font-variant
#:fontVariant
875 #:font-weight
#:fontWeight
878 #:letter-spacing
#:letterSpacing
879 #:line-height
#:lineHeight
880 #:list-style
#:listStyle
881 #:list-style-image
#:listStyleImage
882 #:list-style-position
#:listStylePosition
883 #:list-style-type
#:listStyleType
885 #:margin-bottom
#:marginBottom
886 #:margin-left
#:marginLeft
887 #:margin-right
#:marginRight
888 #:margin-top
#:marginTop
889 #:marker-offset
#:markerOffset
891 #:max-height
#:maxHeight
892 #:max-width
#:maxWidth
893 #:min-height
#:minHeight
894 #:min-width
#:minWidth
897 #:outline-color
#:outlineColor
898 #:outline-style
#:outlineStyle
899 #:outline-width
#:outlineWidth
902 #:padding-bottom
#:paddingBottom
903 #:padding-left
#:paddingLeft
904 #:padding-right
#:paddingRight
905 #:padding-top
#:paddingTop
907 #:page-break-after
#:pageBreakAfter
908 #:page-break-before
#:pageBreakBefore
909 #:page-break-inside
#:pageBreakInside
911 #:pause-after
#:pauseAfter
912 #:pause-before
#:pauseBefore
914 #:pitch-range
#:pitchRange
915 #:play-during
#:playDuring
922 #:speak-header
#:speakHeader
923 #:speak-numeral
#:speakNumeral
924 #:speak-punctuation
#:speakPunctuation
925 #:speech-rate
#:speechRate
927 #:table-layout
#:tableLayout
928 #:text-align
#:textAlign
929 #:text-decoration
#:textDecoration
930 #:text-indent
#:textIndent
931 #:text-shadow
#:textShadow
932 #:text-transform
#:textTransform
934 #:unicode-bidi
#:unicodeBidi
935 #:vertical-align
#:verticalAlign
937 #:voice-family
#:voiceFamily
939 #:white-space
#:whiteSpace
942 #:word-spacing
#:wordSpacing
946 ;; event target interface
948 #:add-event-listener
#:addEventListener
949 #:dispatch-event
#:dispatchEvent
950 #:remove-event-listener
#:removeEventListener
952 ;; event listener interface
954 #:handle-event
#:handleEvent
960 #:current-target
#:currentTarget
961 #:event-phase
#:eventPhase
963 #:time-stamp
#:timeStamp
966 #:init-event
#:initEvent
967 #:prevent-default
#:preventDefault
968 #:stop-propagation
#:stopPropagation
970 ;; document event interface
972 #:create-event
#:createEvent
979 #:init-u-i-event
#:initUIEvent
989 #:related-target
#:relatedTarget
992 #:shift-key
#:shiftKey
994 #:init-mouse-event
#:initMouseEvent
996 ;; mutation event interface
998 #:attr-change
#:attrChange
999 #:attr-name
#:attrName
1000 #:new-value
#:newValue
1001 #:prev-value
#:prevValue
1002 #:related-node
#:relatedNode
1004 #:init-mutation-event
#:initMutationEvent
1007 (re-export-symbols '#:ps-dom1-symbols
'#:ps-dom2-symbols
)
1009 (defpackage #:ps-window-wd-symbols
1010 (:documentation
"Funtions and properties of the W3C Working Draft Window object. Includes DOM level 2 symbols.")
1017 ;; location interface
1036 #:frame-element
#:frameElement
1040 #:set-timeout
#:setTimeout
1041 #:set-interval
#:setInterval
1042 #:clear-timeout
#:clearTimeout
1043 #:clear-interval
#:clearInterval
1046 (re-export-symbols '#:ps-dom2-symbols
'#:ps-window-wd-symbols
)
1048 (defpackage #:ps-dom-nonstandard-symbols
1049 (:documentation
"Non-W3C-standard (incl. DOM level 0) but widely implemented functions and properties.")
1051 #:inner-h-t-m-l
#:innerHTML
1054 #:offset-left
#:offsetLeft
1055 #:offset-top
#:offsetTop
1056 #:offset-height
#:offsetHeight
1057 #:offset-width
#:offsetWidth
1059 #:offset-parent
#:offsetParent
1061 #:scroll-left
#:scrollLeft
1062 #:scroll-top
#:scrollTop
1063 #:scroll-width
#:scrollWidth
1064 #:scroll-height
#:scrollHeight
1066 #:page-x-offset
#:pageXOffset
1067 #:page-y-offset
#:pageYOffset
1069 #:client-height
#:clientHeight
1070 #:client-width
#:clientWidth
1073 (defpackage #:ps-dhtml-symbols
1074 (:documentation
"Meta-package containing function/property symbols
1075 of typical HTML4/DHTML browsers. Includes DOM Levels 0 to 2, Window
1076 working draft, and de-facto standard symbols.
1078 This is probably the package you want to :USE if you're doing
1079 obfuscation in Parenscript and want to target the pre-HTML5 generation
1082 (re-export-symbols '#:ps-window-wd-symbols
'#:ps-dhtml-symbols
)
1083 (re-export-symbols '#:ps-dom-nonstandard-symbols
'#:ps-dhtml-symbols
)