aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorsmihica <smihica@gmail.com>2013-05-04 18:08:29 +0900
committersmihica <smihica@gmail.com>2013-05-04 18:08:29 +0900
commit976449a2d5e28b731e848aa22dab38a05a39ecc1 (patch)
tree1672623eb62d7e9854fa10efdd06b0fbfe346f29 /src
parent60fa9d893bc9f4372dbb7563ba13a279e7d59212 (diff)
downloademmet-mode-976449a2d5e28b731e848aa22dab38a05a39ecc1.tar.lz
emmet-mode-976449a2d5e28b731e848aa22dab38a05a39ecc1.tar.xz
emmet-mode-976449a2d5e28b731e848aa22dab38a05a39ecc1.zip
Added css vendor-prefix support. (http://docs.emmet.io/css-abbreviations/vendor-prefixes/)
Diffstat (limited to 'src')
-rw-r--r--src/css-abbrev.el140
-rw-r--r--src/preferences.el971
-rw-r--r--src/test.el55
3 files changed, 1100 insertions, 66 deletions
diff --git a/src/css-abbrev.el b/src/css-abbrev.el
index 4afcaff..c4709a7 100644
--- a/src/css-abbrev.el
+++ b/src/css-abbrev.el
@@ -2,22 +2,15 @@
;;
;;; CSS abbrev:
-(defun zencoding-css-split-args (exp)
- (zencoding-aif
- (string-match "[ #0-9$-]" exp)
- (cons (substring exp 0 it) (substring exp it))
- (list exp)))
-
+(zencoding-defparameter
+ zencoding-css-unit-aliases
+ (gethash "unitAliases" (gethash "css" zencoding-preferences)))
(defun zencoding-css-arg-number (input)
(zencoding-parse
" *\\(\\(?:-\\|\\)[0-9.]+\\)\\(\\(?:-\\|e\\|p\\|x\\)\\|\\)" 3 "css number arguments"
(cons (list (elt it 1)
- (let ((unit (string-to-char (elt it 2))))
- (cond ((= unit ?-) "px")
- ((= unit ?e) "em")
- ((= unit ?p) "%")
- ((= unit ?x) "ex")
- (t "px"))))
+ (let ((unit (elt it 2)))
+ (gethash unit zencoding-css-unit-aliases "px")))
input)))
(defun zencoding-css-arg-color (input)
@@ -64,13 +57,30 @@
(setf args (cdr it)))
(return (nreverse rt)))))))
+(defun zencoding-css-split-args (exp)
+ (zencoding-aif
+ (string-match "\\(?:[ #0-9$]\\|-[0-9]\\)" exp)
+ (list (substring exp 0 it) (substring exp it))
+ (list exp nil)))
+
+(defun zencoding-css-split-vendor-prefixes (input)
+ (zencoding-parse
+ "\\(-[wmso]+-\\|-\\|\\)\\(.*\\)" 3 "css vendor prefixes"
+ (list (elt it 2)
+ (let ((vp (elt it 1)))
+ (if (not (string= vp ""))
+ (if (string= vp "-") 'auto
+ (string-to-list (subseq vp 1 -1))))))))
+
(defun zencoding-css-subexpr (exp)
- (let* ((importantp (zencoding-css-important-p exp))
- (exp (zencoding-css-split-args
- (if importantp (subseq exp 0 -1) exp)))
- (args (cdr exp)))
- (setf (cdr exp) (cons importantp (zencoding-css-parse-args args)))
- exp))
+ (let* ((importantp (zencoding-css-important-p exp)))
+ (destructuring-bind (exp vp)
+ (zencoding-css-split-vendor-prefixes exp)
+ (destructuring-bind (key args)
+ (zencoding-css-split-args (if importantp (subseq exp 0 -1) exp))
+ `(,key ,vp
+ ,importantp
+ ,@(zencoding-css-parse-args args))))))
(defun zencoding-css-toknize (str)
(let* ((i (split-string str "+"))
@@ -79,7 +89,8 @@
(let ((f (first i))
(s (second i)))
(if f
- (if (and s (or (string= s "") (string-match "^[ #0-9$-]" s)))
+ (if (and s (or (string= s "")
+ (string-match "^\\(?:[ #0-9$]\\|-[0-9]\\)" s)))
(progn
(setf rt (cons (concat f "+" s) rt))
(setf i (cddr i)))
@@ -98,7 +109,7 @@
(zencoding-defparameter
zencoding-css-unitless-properties
- '("z-index" "line-height" "opacity" "font-weight" "zoom"))
+ (gethash "unitlessProperties" (gethash "css" zencoding-preferences)))
(zencoding-defparameter
zencoding-css-unitless-properties-regex
@@ -137,29 +148,52 @@
(nthcdr ,idx-max ,args) " "))))
,body)))))))
+(zencoding-defparameter
+ zencoding-vendor-prefixes-properties
+ (gethash "vendorPrefixesProperties" (gethash "css" zencoding-preferences)))
+(zencoding-defparameter
+ zencoding-vendor-prefixes-default
+ (list "webkit" "moz" "ms" "o"))
+(defun zencoding-css-transform-vendor-prefixes (line vp)
+ (let ((key (subseq line 0 (or (position ?: line) (length line)))))
+ (let ((vps (if (eql vp 'auto)
+ (gethash key
+ zencoding-vendor-prefixes-properties
+ zencoding-vendor-prefixes-default)
+ (mapcar (lambda (v)
+ (cond ((= v ?w) "webkit")
+ ((= v ?m) "moz")
+ ((= v ?s) "ms")
+ ((= v ?o) "o")))
+ vp))))
+ (zencoding-join-string
+ (append (mapcar (lambda (v) (concat "-" v "-" line)) vps)
+ (list line))
+ "\n"))))
+
(defun zencoding-css-transform-exprs (exprs)
(zencoding-join-string
(mapcar
#'(lambda (expr)
- (zencoding-aif
- (gethash (car expr) zencoding-css-snippets)
- (let ((set it) (fn nil) (unitlessp nil))
- (if (stringp set)
- (progn
- ;; new pattern
- ;; creating print function
- (setf fn (zencoding-css-instantiate-lambda set))
- ;; get unitless or no
- (setf unitlessp
- (not (null (string-match
- zencoding-css-unitless-properties-regex set))))
- ;; caching
- (puthash (car expr) (cons fn unitlessp) zencoding-css-snippets))
- (progn
- ;; cache hit.
- (setf fn (car set))
- (setf unitlessp (cdr set))))
- (let ((transformed
+ (let ((basement
+ (zencoding-aif
+ (gethash (car expr) zencoding-css-snippets)
+ (let ((set it) (fn nil) (unitlessp nil))
+ (if (stringp set)
+ (progn
+ ;; new pattern
+ ;; creating print function
+ (setf fn (zencoding-css-instantiate-lambda set))
+ ;; get unitless or no
+ (setf unitlessp
+ (not (null (string-match
+ zencoding-css-unitless-properties-regex set))))
+ ;; caching
+ (puthash (car expr) (cons fn unitlessp) zencoding-css-snippets))
+ (progn
+ ;; cache hit.
+ (setf fn (car set))
+ (setf unitlessp (cdr set))))
(apply fn
(mapcar
#'(lambda (arg)
@@ -167,16 +201,24 @@
(if unitlessp (car arg)
(apply #'concat arg))
arg))
- (cddr expr)))))
- (if (cadr expr)
- (concat (subseq transformed 0 -1) " !important;")
- transformed)))
- (concat (car expr) ":"
- (zencoding-join-string
- (mapcar #'(lambda (arg)
- (if (listp arg) (apply #'concat arg) arg))
- (cdr expr)) " ")
- ";")))
+ (cdddr expr))))
+ (concat (car expr) ":"
+ (zencoding-join-string
+ (mapcar #'(lambda (arg)
+ (if (listp arg) (apply #'concat arg) arg))
+ (cdddr expr)) " ")
+ ";"))))
+ (let* ((separator-pos (position ?: basement))
+ (basement (concat (subseq basement 0 (1+ separator-pos)) " "
+ (subseq basement (1+ separator-pos)))))
+ (let ((line
+ (if (caddr expr)
+ (concat (subseq basement 0 -1) " !important;")
+ basement)))
+ (zencoding-aif
+ (cadr expr)
+ (zencoding-css-transform-vendor-prefixes line it)
+ line)))))
exprs)
"\n"))
diff --git a/src/preferences.el b/src/preferences.el
new file mode 100644
index 0000000..e456b59
--- /dev/null
+++ b/src/preferences.el
@@ -0,0 +1,971 @@
+;; src/preferences.el
+;; This file is generated from conf/preferences.json
+;; Don't edit.
+(zencoding-defparameter zencoding-preferences
+(let ((tbl (make-hash-table :test 'equal)))
+(puthash "css" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "vendorPrefixesProperties" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "text-fill-color" (vector
+"webkit"
+)
+ tbl)
+(puthash "ime-mode" (vector
+"ms"
+)
+ tbl)
+(puthash "grid-layer" (vector
+"ms"
+)
+ tbl)
+(puthash "user-drag" (vector
+"webkit"
+)
+ tbl)
+(puthash "mask-image" (vector
+"webkit"
+)
+ tbl)
+(puthash "font-feature-settings" (vector
+"moz"
+"ms"
+)
+ tbl)
+(puthash "outline-radius-topleft" (vector
+"moz"
+)
+ tbl)
+(puthash "mask-box-image-slice" (vector
+"webkit"
+)
+ tbl)
+(puthash "background-composite" (vector
+"webkit"
+)
+ tbl)
+(puthash "text-underline-position" (vector
+"ms"
+)
+ tbl)
+(puthash "hyphenate-limit-chars" (vector
+"ms"
+)
+ tbl)
+(puthash "marquee-speed" (vector
+"o"
+)
+ tbl)
+(puthash "input-required" (vector
+"o"
+)
+ tbl)
+(puthash "color-correction" (vector
+"webkit"
+)
+ tbl)
+(puthash "background-size" (vector
+"webkit"
+)
+ tbl)
+(puthash "background-origin" (vector
+"webkit"
+)
+ tbl)
+(puthash "wrap-through" (vector
+"ms"
+)
+ tbl)
+(puthash "text-emphasis-position" (vector
+"webkit"
+)
+ tbl)
+(puthash "user-select" (vector
+"webkit"
+"moz"
+"ms"
+)
+ tbl)
+(puthash "dashboard-region" (vector
+"webkit"
+"o"
+)
+ tbl)
+(puthash "accesskey" (vector
+"o"
+)
+ tbl)
+(puthash "scrollbar-track-color" (vector
+"ms"
+)
+ tbl)
+(puthash "grid-columns" (vector
+"ms"
+)
+ tbl)
+(puthash "text-stroke-width" (vector
+"webkit"
+)
+ tbl)
+(puthash "link-source" (vector
+"o"
+)
+ tbl)
+(puthash "scrollbar-arrow-color" (vector
+"ms"
+)
+ tbl)
+(puthash "border-radius" (vector
+"webkit"
+"moz"
+)
+ tbl)
+(puthash "text-stroke-color" (vector
+"webkit"
+)
+ tbl)
+(puthash "box-shadow" (vector
+"webkit"
+"moz"
+)
+ tbl)
+(puthash "flow-into" (vector
+"ms"
+)
+ tbl)
+(puthash "scrollbar-highlight-color" (vector
+"ms"
+)
+ tbl)
+(puthash "border-left-colors" (vector
+"moz"
+)
+ tbl)
+(puthash "word-wrap" (vector
+"ms"
+)
+ tbl)
+(puthash "text-emphasis-color" (vector
+"webkit"
+)
+ tbl)
+(puthash "hyphens" (vector
+"webkit"
+"moz"
+"ms"
+)
+ tbl)
+(puthash "marquee-direction" (vector
+"webkit"
+)
+ tbl)
+(puthash "column-rule-width" (vector
+"webkit"
+"moz"
+)
+ tbl)
+(puthash "box-lines" (vector
+"webkit"
+"ms"
+)
+ tbl)
+(puthash "column-break-inside" (vector
+"webkit"
+)
+ tbl)
+(puthash "scroll-snap-points-x" (vector
+"ms"
+)
+ tbl)
+(puthash "grid-row-align" (vector
+"ms"
+)
+ tbl)
+(puthash "force-broken-image-icon" (vector
+"moz"
+)
+ tbl)
+(puthash "animation-fill-mode" (vector
+"webkit"
+"moz"
+"o"
+)
+ tbl)
+(puthash "box-line-progression" (vector
+"ms"
+)
+ tbl)
+(puthash "mask-size" (vector
+"webkit"
+)
+ tbl)
+(puthash "scroll-boundary-left" (vector
+"ms"
+)
+ tbl)
+(puthash "text-combine" (vector
+"webkit"
+)
+ tbl)
+(puthash "grid-column-align" (vector
+"ms"
+)
+ tbl)
+(puthash "perspective-origin" (vector
+"webkit"
+"moz"
+"ms"
+)
+ tbl)
+(puthash "overflow-style" (vector
+"ms"
+)
+ tbl)
+(puthash "mask-position" (vector
+"webkit"
+)
+ tbl)
+(puthash "content-zoom-chaining" (vector
+"ms"
+)
+ tbl)
+(puthash "column-span" (vector
+"webkit"
+)
+ tbl)
+(puthash "border-fit" (vector
+"webkit"
+)
+ tbl)
+(puthash "outline-radius-topright" (vector
+"moz"
+)
+ tbl)
+(puthash "tab-size" (vector
+"moz"
+"o"
+)
+ tbl)
+(puthash "layout-grid-type" (vector
+"ms"
+)
+ tbl)
+(puthash "mask-clip" (vector
+"webkit"
+)
+ tbl)
+(puthash "column-gap" (vector
+"webkit"
+"moz"
+)
+ tbl)
+(puthash "text-security" (vector
+"webkit"
+)
+ tbl)
+(puthash "text-align-last" (vector
+"ms"
+)
+ tbl)
+(puthash "svg-shadow" (vector
+"webkit"
+)
+ tbl)
+(puthash "accelerator" (vector
+"ms"
+)
+ tbl)
+(puthash "locale" (vector
+"webkit"
+)
+ tbl)
+(puthash "line-clamp" (vector
+"webkit"
+)
+ tbl)
+(puthash "column-count" (vector
+"webkit"
+"moz"
+)
+ tbl)
+(puthash "line-box-contain" (vector
+"webkit"
+)
+ tbl)
+(puthash "line-break" (vector
+"webkit"
+"ms"
+)
+ tbl)
+(puthash "transform-style" (vector
+"webkit"
+"moz"
+"ms"
+)
+ tbl)
+(puthash "perspective" (vector
+"webkit"
+"moz"
+"ms"
+)
+ tbl)
+(puthash "orient" (vector
+"moz"
+)
+ tbl)
+(puthash "float-edge" (vector
+"moz"
+)
+ tbl)
+(puthash "image-region" (vector
+"moz"
+)
+ tbl)
+(puthash "mask-box-image-width" (vector
+"webkit"
+)
+ tbl)
+(puthash "background-inline-policy" (vector
+"moz"
+)
+ tbl)
+(puthash "user-modify" (vector
+"webkit"
+"moz"
+)
+ tbl)
+(puthash "content-zoom-snap-type" (vector
+"ms"
+)
+ tbl)
+(puthash "outline-radius-bottomright" (vector
+"moz"
+)
+ tbl)
+(puthash "wrap-margin" (vector
+"ms"
+)
+ tbl)
+(puthash "transform-origin-z" (vector
+"ms"
+)
+ tbl)
+(puthash "mask-box-image" (vector
+"webkit"
+)
+ tbl)
+(puthash "scroll-chaining" (vector
+"ms"
+)
+ tbl)
+(puthash "grid-row" (vector
+"ms"
+)
+ tbl)
+(puthash "nbsp-mode" (vector
+"webkit"
+)
+ tbl)
+(puthash "mask-box-image-source" (vector
+"webkit"
+)
+ tbl)
+(puthash "font-language-override" (vector
+"moz"
+)
+ tbl)
+(puthash "animation-delay" (vector
+"webkit"
+"moz"
+"o"
+)
+ tbl)
+(puthash "hyphenate-character" (vector
+"webkit"
+)
+ tbl)
+(puthash "box-flex-group" (vector
+"webkit"
+)
+ tbl)
+(puthash "border-image" (vector
+"webkit"
+"moz"
+"o"
+)
+ tbl)
+(puthash "highlight" (vector
+"webkit"
+)
+ tbl)
+(puthash "marquee-repetition" (vector
+"webkit"
+)
+ tbl)
+(puthash "grid-column" (vector
+"ms"
+)
+ tbl)
+(puthash "box-align" (vector
+"webkit"
+"moz"
+"ms"
+)
+ tbl)
+(puthash "user-input" (vector
+"moz"
+)
+ tbl)
+(puthash "animation-duration" (vector
+"webkit"
+"moz"
+"o"
+)
+ tbl)
+(puthash "transform-origin-y" (vector
+"ms"
+)
+ tbl)
+(puthash "box-ordinal-group" (vector
+"webkit"
+"moz"
+"ms"
+)
+ tbl)
+(puthash "box-orient" (vector
+"webkit"
+"moz"
+"ms"
+)
+ tbl)
+(puthash "stack-sizing" (vector
+"moz"
+)
+ tbl)
+(puthash "transition" (vector
+"webkit"
+"moz"
+"ms"
+"o"
+)
+ tbl)
+(puthash "text-size-adjust" (vector
+"moz"
+"ms"
+)
+ tbl)
+(puthash "filter" (vector
+"ms"
+)
+ tbl)
+(puthash "content-zoom-boundary" (vector
+"ms"
+)
+ tbl)
+(puthash "layout-grid-char" (vector
+"ms"
+)
+ tbl)
+(puthash "perspective-origin-x" (vector
+"ms"
+)
+ tbl)
+(puthash "perspective-origin-y" (vector
+"ms"
+)
+ tbl)
+(puthash "column-rule-color" (vector
+"webkit"
+"moz"
+)
+ tbl)
+(puthash "high-contrast-adjust" (vector
+"ms"
+)
+ tbl)
+(puthash "text-justify" (vector
+"ms"
+)
+ tbl)
+(puthash "text-decoration-color" (vector
+"moz"
+)
+ tbl)
+(puthash "block-progression" (vector
+"ms"
+)
+ tbl)
+(puthash "border-horizontal-spacing" (vector
+"webkit"
+)
+ tbl)
+(puthash "wrap-flow" (vector
+"ms"
+)
+ tbl)
+(puthash "margin-before-collapse" (vector
+"webkit"
+)
+ tbl)
+(puthash "table-baseline" (vector
+"o"
+)
+ tbl)
+(puthash "background-clip" (vector
+"webkit"
+"moz"
+)
+ tbl)
+(puthash "interpolation-mode" (vector
+"ms"
+)
+ tbl)
+(puthash "scroll-snap-type" (vector
+"ms"
+)
+ tbl)
+(puthash "text-emphasis-style" (vector
+"webkit"
+)
+ tbl)
+(puthash "flow-from" (vector
+"ms"
+)
+ tbl)
+(puthash "backface-visibility" (vector
+"webkit"
+"moz"
+"ms"
+)
+ tbl)
+(puthash "transform" (vector
+"webkit"
+"moz"
+"ms"
+"o"
+)
+ tbl)
+(puthash "column-break-after" (vector
+"webkit"
+)
+ tbl)
+(puthash "mask-composite" (vector
+"webkit"
+)
+ tbl)
+(puthash "layout-grid" (vector
+"ms"
+)
+ tbl)
+(puthash "column-width" (vector
+"webkit"
+"moz"
+)
+ tbl)
+(puthash "scrollbar-base-color" (vector
+"ms"
+)
+ tbl)
+(puthash "window-shadow" (vector
+"moz"
+)
+ tbl)
+(puthash "object-fit" (vector
+"o"
+)
+ tbl)
+(puthash "text-decorations-in-effect" (vector
+"webkit"
+)
+ tbl)
+(puthash "box-flex" (vector
+"webkit"
+"moz"
+"ms"
+)
+ tbl)
+(puthash "hyphenate-limit-after" (vector
+"webkit"
+)
+ tbl)
+(puthash "animation-play-state" (vector
+"webkit"
+"moz"
+"o"
+)
+ tbl)
+(puthash "transition-delay" (vector
+"webkit"
+"moz"
+"ms"
+"o"
+)
+ tbl)
+(puthash "input-format" (vector
+"o"
+)
+ tbl)
+(puthash "mask-attachment" (vector
+"webkit"
+)
+ tbl)
+(puthash "scroll-boundary-right" (vector
+"ms"
+)
+ tbl)
+(puthash "animation-iteration-count" (vector
+"webkit"
+"moz"
+"o"
+)
+ tbl)
+(puthash "link" (vector
+"o"
+)
+ tbl)
+(puthash "content-zoom-boundary-max" (vector
+"ms"
+)
+ tbl)
+(puthash "text-decoration-style" (vector
+"moz"
+)
+ tbl)
+(puthash "text-autospace" (vector
+"ms"
+)
+ tbl)
+(puthash "mask-origin" (vector
+"webkit"
+)
+ tbl)
+(puthash "user-focus" (vector
+"moz"
+)
+ tbl)
+(puthash "border-bottom-colors" (vector
+"moz"
+)
+ tbl)
+(puthash "scroll-boundary-top" (vector
+"ms"
+)
+ tbl)
+(puthash "content-zooming" (vector
+"ms"
+)
+ tbl)
+(puthash "appearance" (vector
+"webkit"
+"moz"
+)
+ tbl)
+(puthash "scroll-snap-x" (vector
+"ms"
+)
+ tbl)
+(puthash "marquee-loop" (vector
+"o"
+)
+ tbl)
+(puthash "column-rule-style" (vector
+"webkit"
+"moz"
+)
+ tbl)
+(puthash "marquee-increment" (vector
+"webkit"
+)
+ tbl)
+(puthash "behavior" (vector
+"ms"
+)
+ tbl)
+(puthash "box-pack" (vector
+"webkit"
+"moz"
+"ms"
+)
+ tbl)
+(puthash "animation-direction" (vector
+"webkit"
+"moz"
+"o"
+)
+ tbl)
+(puthash "scrollbar-darkshadow-color" (vector
+"ms"
+)
+ tbl)
+(puthash "animation-timing-function" (vector
+"webkit"
+"moz"
+"o"
+)
+ tbl)
+(puthash "text-blink" (vector
+"moz"
+)
+ tbl)
+(puthash "scroll-boundary-bottom" (vector
+"ms"
+)
+ tbl)
+(puthash "mask-box-image-repeat" (vector
+"webkit"
+)
+ tbl)
+(puthash "text-orientation" (vector
+"webkit"
+)
+ tbl)
+(puthash "grid-column-span" (vector
+"ms"
+)
+ tbl)
+(puthash "binding" (vector
+"moz"
+)
+ tbl)
+(puthash "transform-origin" (vector
+"webkit"
+"moz"
+"ms"
+"o"
+)
+ tbl)
+(puthash "text-decoration-line" (vector
+"moz"
+)
+ tbl)
+(puthash "animation-name" (vector
+"webkit"
+"moz"
+"o"
+)
+ tbl)
+(puthash "marquee-dir" (vector
+"o"
+)
+ tbl)
+(puthash "content-zoom-snap" (vector
+"ms"
+)
+ tbl)
+(puthash "border-top-colors" (vector
+"moz"
+)
+ tbl)
+(puthash "border-vertical-spacing" (vector
+"webkit"
+)
+ tbl)
+(puthash "grid-rows" (vector
+"ms"
+)
+ tbl)
+(puthash "box-reflect" (vector
+"webkit"
+)
+ tbl)
+(puthash "hyphenate-limit-before" (vector
+"webkit"
+)
+ tbl)
+(puthash "mask-box-image-outset" (vector
+"webkit"
+)
+ tbl)
+(puthash "outline-radius-bottomleft" (vector
+"moz"
+)
+ tbl)
+(puthash "text-overflow" (vector
+"ms"
+)
+ tbl)
+(puthash "border-right-colors" (vector
+"moz"
+)
+ tbl)
+(puthash "layout-flow" (vector
+"ms"
+)
+ tbl)
+(puthash "box-direction" (vector
+"webkit"
+"moz"
+"ms"
+)
+ tbl)
+(puthash "animation" (vector
+"webkit"
+"o"
+)
+ tbl)
+(puthash "hyphenate-limit-lines" (vector
+"ms"
+)
+ tbl)
+(puthash "scrollbar-face-color" (vector
+"ms"
+)
+ tbl)
+(puthash "column-break-before" (vector
+"webkit"
+)
+ tbl)
+(puthash "content-zoom-snap-points" (vector
+"ms"
+)
+ tbl)
+(puthash "grid-row-span" (vector
+"ms"
+)
+ tbl)
+(puthash "touch-action" (vector
+"ms"
+)
+ tbl)
+(puthash "marquee-style" (vector
+"webkit"
+"o"
+)
+ tbl)
+(puthash "margin-after-collapse" (vector
+"webkit"
+)
+ tbl)
+(puthash "text-kashida-space" (vector
+"ms"
+)
+ tbl)
+(puthash "scrollbar-shadow-color" (vector
+"ms"
+)
+ tbl)
+(puthash "object-position" (vector
+"o"
+)
+ tbl)
+(puthash "hyphenate-limit-zone" (vector
+"ms"
+)
+ tbl)
+(puthash "scroll-snap-y" (vector
+"ms"
+)
+ tbl)
+(puthash "transform-origin-x" (vector
+"ms"
+)
+ tbl)
+(puthash "transition-property" (vector
+"webkit"
+"moz"
+"ms"
+"o"
+)
+ tbl)
+(puthash "word-break" (vector
+"ms"
+)
+ tbl)
+(puthash "scroll-snap-points-y" (vector
+"ms"
+)
+ tbl)
+(puthash "scroll-boundary" (vector
+"ms"
+)
+ tbl)
+(puthash "mask-repeat" (vector
+"webkit"
+)
+ tbl)
+(puthash "writing-mode" (vector
+"webkit"
+"ms"
+)
+ tbl)
+(puthash "layout-grid-mode" (vector
+"ms"
+)
+ tbl)
+(puthash "background-position-y" (vector
+"ms"
+)
+ tbl)
+(puthash "scroll-rails" (vector
+"ms"
+)
+ tbl)
+(puthash "content-zoom-boundary-min" (vector
+"ms"
+)
+ tbl)
+(puthash "background-position-x" (vector
+"ms"
+)
+ tbl)
+(puthash "box-sizing" (vector
+"webkit"
+"moz"
+)
+ tbl)
+(puthash "transition-duration" (vector
+"webkit"
+"moz"
+"ms"
+"o"
+)
+ tbl)
+(puthash "rtl-ordering" (vector
+"webkit"
+)
+ tbl)
+(puthash "layout-grid-line" (vector
+"ms"
+)
+ tbl)
+(puthash "font-smoothing" (vector
+"webkit"
+)
+ tbl)
+(puthash "transition-timing-function" (vector
+"webkit"
+"moz"
+"ms"
+"o"
+)
+ tbl)
+tbl) tbl)
+(puthash "unitlessProperties" (vector
+"z-index"
+"line-height"
+"opacity"
+"font-weight"
+"zoom"
+)
+ tbl)
+(puthash "floatUnit" "em" tbl)
+(puthash "intUnit" "px" tbl)
+(puthash "keywordAliases" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "a" "auto" tbl)
+(puthash "do" "dotted" tbl)
+(puthash "i" "inherit" tbl)
+(puthash "da" "dashed" tbl)
+(puthash "s" "solid" tbl)
+(puthash "t" "transparent" tbl)
+tbl) tbl)
+(puthash "keywords" (vector
+"auto"
+"inherit"
+)
+ tbl)
+(puthash "unitAliases" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "p" "%" tbl)
+(puthash "r" "rem" tbl)
+(puthash "e" "em" tbl)
+(puthash "x" "ex" tbl)
+tbl) tbl)
+tbl) tbl)
+tbl))
diff --git a/src/test.el b/src/test.el
index 71e7f1d..1433d86 100644
--- a/src/test.el
+++ b/src/test.el
@@ -423,7 +423,9 @@
"abc++cde+" ("abc+" "cde+")
"ab:c+0p0x#aa+p0+cde+" ("ab:c+0p0x#aa" "p0" "cde+")
"ab+#0+p+#c+x++cde+" ("ab+#0" "p+#c" "x+" "cde+")
- "abc def" ("abc def"))
+ "abc def" ("abc def")
+ "-abc+-xyz" ("-abc" "-xyz")
+ "-abc+-10" ("-abc+-10"))
(define-zencoding-unit-test-case CSS-parse-arg-number
#'zencoding-css-arg-number
@@ -464,15 +466,21 @@
"1p2x3-4e5x" (("1" "%") ("2" "ex") ("3" "px") ("4" "em") ("5" "ex"))
"#abc#de#f-3" ("#aabbcc" "#dedede" "#ffffff" ("-3" "px")))
+(define-zencoding-unit-test-case CSS-split-vendor-prefixes
+ #'zencoding-css-split-vendor-prefixes
+ "" ("" nil)
+ "-abc" ("abc" auto)
+ "-wmso-abc" ("abc" (119 109 115 111)))
+
(define-zencoding-unit-test-case CSS-exprs
#'zencoding-css-expr
- "" (("" nil))
- "cl:l+ov:h+bg+" (("cl:l" nil) ("ov:h" nil) ("bg+" nil))
- "m10-auto" (("m" nil ("10" "px") "auto"))
- "bg++c" (("bg+" nil) ("c" nil))
- "m+0-10-10--20+p0-0" (("m+" nil ("0" "px") ("10" "px") ("10" "px") ("-20" "px"))
- ("p" nil ("0" "px") ("0" "px")))
- "bg+#abc#bc#c-3" (("bg+" nil "#aabbcc" "#bcbcbc" "#cccccc" ("-3" "px"))))
+ "" (("" nil nil))
+ "cl:l+ov:h+bg+" (("cl:l" nil nil) ("ov:h" nil nil) ("bg+" nil nil))
+ "m10-auto!" (("m" nil t ("10" "px") "auto"))
+ "bg++c!" (("bg+" nil nil) ("c" nil t))
+ "m+0-10-10--20!+p0-0" (("m+" nil t ("0" "px") ("10" "px") ("10" "px") ("-20" "px"))
+ ("p" nil nil ("0" "px") ("0" "px")))
+ "bg+#abc#bc#c-3!" (("bg+" nil t "#aabbcc" "#bcbcbc" "#cccccc" ("-3" "px"))))
(defmacro define-zencoding-transform-css-test-case (name &rest tests)
`(define-zencoding-transform-test-case ,name
@@ -480,16 +488,29 @@
,@tests))
(define-zencoding-transform-css-test-case CSS-transform
- "m0+p0-1p2e3x" ("margin:0px;"
- "padding:0px 1% 2em 3ex;")
- "p!+m10e!+f" ("padding: !important;"
- "margin:10em !important;"
- "font:;")
- "fs" ("font-style:italic;")
+ "m0+p0-1p2e3x" ("margin: 0px;"
+ "padding: 0px 1% 2em 3ex;")
+ "p!+m10e!+f" ("padding: !important;"
+ "margin: 10em !important;"
+ "font: ;")
+ "fs" ("font-style: italic;")
+ "xxxxxx 0 auto 0e auto!" ("xxxxxx: 0px auto 0em auto !important;")
"p auto+m auto+bg+#F00 x.jpg 10 10 repeat-x"
- ("padding:auto;"
- "margin:auto;"
- "background:#FF0000 url(x.jpg) 10px 10px repeat-x;"))
+ ("padding: auto;"
+ "margin: auto;"
+ "background: #FF0000 url(x.jpg) 10px 10px repeat-x;")
+ "-bdrs" ("-webkit-border-radius: ;"
+ "-moz-border-radius: ;"
+ "border-radius: ;")
+ "-super-foo" ("-webkit-super-foo: ;"
+ "-moz-super-foo: ;"
+ "-ms-super-foo: ;"
+ "-o-super-foo: ;"
+ "super-foo: ;")
+ "-wm-trf" ("-webkit-transform: ;"
+ "-moz-transform: ;"
+ "transform: ;")
+ )
;; start
(zencoding-test-cases) \ No newline at end of file