aboutsummaryrefslogtreecommitdiffstats
path: root/zencoding-mode.el
diff options
context:
space:
mode:
Diffstat (limited to 'zencoding-mode.el')
-rw-r--r--zencoding-mode.el105
1 files changed, 82 insertions, 23 deletions
diff --git a/zencoding-mode.el b/zencoding-mode.el
index 2798997..d4caa18 100644
--- a/zencoding-mode.el
+++ b/zencoding-mode.el
@@ -79,6 +79,16 @@
(defun zencoding-join-string (lis joiner)
(mapconcat 'identity lis joiner))
+(defun zencoding-get-keys-of-hash (hash)
+ (let ((ks nil))
+ (maphash #'(lambda (k v) (setq ks (cons k ks))) hash)
+ ks))
+
+(defun zencoding-get-vals-of-hash (hash)
+ (let ((vs nil))
+ (maphash #'(lambda (k v) (setq vs (cons v vs))) hash)
+ vs))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Generic parsing macros and utilities
@@ -262,7 +272,7 @@ tbl) tbl)
(puthash "bdls" "border-left-style:|;" tbl)
(puthash "bdlw" "border-left-width:|;" tbl)
(puthash "bdli" "border-left-image:url(|);" tbl)
-(puthash "bdlc" "border-left-color:#${1:000};" tbl)
+(puthash "bdlc" "border-left-color:${1:#000};" tbl)
(puthash "whsc" "white-space-collapse:|;" tbl)
(puthash "bdtlrs" "border-top-left-radius:|;" tbl)
(puthash "bdblrs" "border-bottom-left-radius:|;" tbl)
@@ -304,7 +314,7 @@ tbl) tbl)
(puthash "d:tbclg" "display:table-column-group;" tbl)
(puthash "bdf" "border-fit:${1:repeat};" tbl)
(puthash "@f" "@font-face {\n\tfont-family:|;\n\tsrc:url(|);\n}" tbl)
-(puthash "bdc" "border-color:#${1:000};" tbl)
+(puthash "bdc" "border-color:${1:#000};" tbl)
(puthash "d:rbt" "display:ruby-text;" tbl)
(puthash "bdl" "border-left:|;" tbl)
(puthash "@i" "@import url(|);" tbl)
@@ -361,7 +371,7 @@ tbl) tbl)
(puthash "ti" "text-indent:|;" tbl)
(puthash "pgbi:av" "page-break-inside:avoid;" tbl)
(puthash "tj:t" "text-justify:tibetan;" tbl)
-(puthash "bgc" "background-color:#${1:fff};" tbl)
+(puthash "bgc" "background-color:${1:#fff};" tbl)
(puthash "trf:tx" "transform: translateX(${1:x});" tbl)
(puthash "trf:ty" "transform: translateY(${1:y});" tbl)
(puthash "va:sup" "vertical-align:super;" tbl)
@@ -452,7 +462,7 @@ tbl) tbl)
(puthash "bdbk" "border-break:${1:close};" tbl)
(puthash "pgba:r" "page-break-after:right;" tbl)
(puthash "wfsm" "-webkit-font-smoothing:${antialiased};" tbl)
-(puthash "bdbc" "border-bottom-color:#${1:000};" tbl)
+(puthash "bdbc" "border-bottom-color:${1:#000};" tbl)
(puthash "ec" "empty-cells:|;" tbl)
(puthash "te:ac" "text-emphasis:accent;" tbl)
(puthash "fs" "font-style:${italic};" tbl)
@@ -493,7 +503,7 @@ tbl) tbl)
(puthash "bdtw" "border-top-width:|;" tbl)
(puthash "cnt:c" "content:counter(|);" tbl)
(puthash "cnt:a" "content:attr(|);" tbl)
-(puthash "bdtc" "border-top-color:#${1:000};" tbl)
+(puthash "bdtc" "border-top-color:${1:#000};" tbl)
(puthash "cnt:noq" "content:no-open-quote;" tbl)
(puthash "td:u" "text-decoration:underline;" tbl)
(puthash "bdti" "border-top-image:url(|);" tbl)
@@ -608,8 +618,8 @@ tbl) tbl)
(puthash "fst:ue" "font-stretch:ultra-expanded;" tbl)
(puthash "fst:uc" "font-stretch:ultra-condensed;" tbl)
(puthash "pgbb:al" "page-break-before:always;" tbl)
-(puthash "c" "color:#${1:000};" tbl)
-(puthash "bdrc" "border-right-color:#${1:000};" tbl)
+(puthash "c" "color:${1:#000};" tbl)
+(puthash "bdrc" "border-right-color:${1:#000};" tbl)
(puthash "bdtli:n" "border-top-left-image:none;" tbl)
(puthash "bdtli:c" "border-top-left-image:continue;" tbl)
(puthash "list:ur" "list-style-type:upper-roman;" tbl)
@@ -760,7 +770,7 @@ tbl) tbl)
(puthash "fs:i" "font-style:italic;" tbl)
(puthash "ct:oq" "content:open-quote;" tbl)
(puthash "bds:g" "border-style:groove;" tbl)
-(puthash "olc" "outline-color:#${1:000};" tbl)
+(puthash "olc" "outline-color:${1:#000};" tbl)
(puthash "bds:r" "border-style:ridge;" tbl)
(puthash "bds:s" "border-style:solid;" tbl)
(puthash "bds:w" "border-style:wave;" tbl)
@@ -2340,6 +2350,16 @@ tbl) tbl)
tbl)
(puthash "floatUnit" "em" tbl)
(puthash "intUnit" "px" tbl)
+(puthash "color" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "case" "auto" tbl)
+(puthash "shortenIfPossible" t tbl)
+(puthash "trailingAliases" (let ((tbl (make-hash-table :test 'equal)))
+(puthash "h" "hidden" tbl)
+(puthash "s" "solid" tbl)
+(puthash "t" "dotted" tbl)
+(puthash "n" "none" tbl)
+tbl) tbl)
+tbl) tbl)
(puthash "keywordAliases" (let ((tbl (make-hash-table :test 'equal)))
(puthash "a" "auto" tbl)
(puthash "do" "dotted" tbl)
@@ -2354,10 +2374,11 @@ tbl) tbl)
)
tbl)
(puthash "unitAliases" (let ((tbl (make-hash-table :test 'equal)))
-(puthash "p" "%" tbl)
-(puthash "r" "rem" tbl)
(puthash "e" "em" tbl)
+(puthash "r" "rem" tbl)
+(puthash "-" "px" tbl)
(puthash "x" "ex" tbl)
+(puthash "p" "%" tbl)
tbl) tbl)
tbl) tbl)
tbl))
@@ -2608,7 +2629,7 @@ tbl))
(input (elt it 2)))
`((,(read name) ,value) . ,input)))
it
- (zencoding-parse "=\\([^\\,\\+\\>\\ )]*\\)" 2
+ (zencoding-parse "=\\([^\\,\\+\\>\\{\\}\\ )]*\\)" 2
"=property value"
(let ((value (elt it 1))
(input (elt it 2)))
@@ -3030,19 +3051,33 @@ tbl))
(gethash "unitAliases" (gethash "css" zencoding-preferences)))
(defun zencoding-css-arg-number (input)
(zencoding-parse
- " *\\(\\(?:-\\|\\)[0-9.]+\\)\\(\\(?:-\\|e\\|p\\|x\\)\\|\\)" 3 "css number arguments"
+ " *\\(\\(?:-\\|\\)[0-9.]+\\)\\(-\\|[A-Za-z]*\\)" 3 "css number arguments"
(cons (list (elt it 1)
(let ((unit (elt it 2)))
- (gethash unit zencoding-css-unit-aliases "px")))
+ (if (= (length unit) 0)
+ (if (find ?. (elt it 1)) "em" "px")
+ (gethash unit zencoding-css-unit-aliases unit))))
input)))
+(zencoding-defparameter
+ zencoding-css-color-shorten-if-possible
+ (gethash "shortenIfPossible" (gethash "color" (gethash "css" zencoding-preferences))))
+(zencoding-defparameter
+ zencoding-css-color-case
+ (gethash "case" (gethash "color" (gethash "css" zencoding-preferences))))
+(zencoding-defparameter
+ zencoding-css-color-trailing-aliases
+ (gethash "trailingAliases" (gethash "color" (gethash "css" zencoding-preferences))))
(defun zencoding-css-arg-color (input)
(zencoding-parse
- " *#\\([0-9a-fA-F]\\{1,6\\}\\)" 2 "css color argument"
- (cons (let* ((n (elt it 1))
+ (concat " *#\\([0-9a-fA-F]\\{1,6\\}\\)\\(rgb\\|\\)\\(["
+ (zencoding-join-string
+ (zencoding-get-keys-of-hash zencoding-css-color-trailing-aliases) "")
+ "]\\|\\)")
+ 4 "css color argument"
+ (let ((color
+ (let* ((n (elt it 1))
(l (length n)))
- (concat
- "#"
(substring
(cond ((= l 1) (concat (make-list 6 (string-to-char n))))
((= l 2) (concat n n n))
@@ -3050,8 +3085,30 @@ tbl))
(loop for c in (string-to-list n)
append (list c c))))
(t (concat n n)))
- 0 6)))
- input)))
+ 0 6))))
+ (cons
+ (let ((rgb-mode (string= (elt it 2) "rgb")))
+ (if rgb-mode
+ (format "rgb(%d,%d,%d)"
+ (string-to-int (substring color 0 2) 16)
+ (string-to-int (substring color 2 4) 16)
+ (string-to-int (substring color 4 6) 16))
+ (concat
+ "#"
+ (let ((filter (cond ((string= zencoding-css-color-case "auto") #'identity)
+ ((string= zencoding-css-color-case "up") #'upcase)
+ (t #'downcase))))
+ (funcall
+ filter
+ (if (and zencoding-css-color-shorten-if-possible
+ (eql (aref color 0) (aref color 1))
+ (eql (aref color 2) (aref color 3))
+ (eql (aref color 4) (aref color 5)))
+ (concat (mapcar #'(lambda (i) (aref color i)) '(0 2 4)))
+ color))))))
+ (if (< 0 (length (elt it 3)))
+ (cons (gethash (elt it 3) zencoding-css-color-trailing-aliases) input)
+ input)))))
(defun zencoding-css-arg-something (input)
(zencoding-parse
@@ -3075,10 +3132,12 @@ tbl))
(when args
(let ((rt nil))
(loop
- (zencoding-pif (zencoding-css-parse-arg args)
- (progn (push (car it) rt)
- (setf args (cdr it)))
- (return (nreverse rt)))))))
+ (zencoding-pif
+ (zencoding-css-parse-arg args)
+ (loop for i on it do (push (car i) rt)
+ while (consp (cdr i))
+ finally (setq args (cdr i)))
+ (return (nreverse rt)))))))
(defun zencoding-css-split-args (exp)
(zencoding-aif