aboutsummaryrefslogtreecommitdiffstats
path: root/zencoding-mode.el
diff options
context:
space:
mode:
Diffstat (limited to 'zencoding-mode.el')
-rw-r--r--zencoding-mode.el1111
1 files changed, 1062 insertions, 49 deletions
diff --git a/zencoding-mode.el b/zencoding-mode.el
index 0924965..98c4a02 100644
--- a/zencoding-mode.el
+++ b/zencoding-mode.el
@@ -940,6 +940,977 @@ tbl) tbl)
(puthash "filters" "html, xsl" tbl)
tbl) tbl)
tbl))
+;; 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))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; XML abbrev
@@ -1543,22 +2514,15 @@ tbl))
;;
;;; 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)
@@ -1605,13 +2569,30 @@ tbl))
(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 "+"))
@@ -1620,7 +2601,8 @@ tbl))
(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)))
@@ -1639,7 +2621,7 @@ tbl))
(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
@@ -1678,29 +2660,52 @@ tbl))
(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)
@@ -1708,16 +2713,24 @@ tbl))
(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"))