aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimen Heggestøyl2018-01-13 09:41:47 +0100
committerSimen Heggestøyl2018-01-21 14:20:56 +0100
commitcff45e6f4e6a684d233140b5ab3edbf73fa5edae (patch)
treeb1e5ad9b3946aa9d62b188ed6f67ca3c6931b314
parent64c846738617d1d037eac0cefb6586c04317b0a1 (diff)
downloademacs-cff45e6f4e6a684d233140b5ab3edbf73fa5edae.tar.gz
emacs-cff45e6f4e6a684d233140b5ab3edbf73fa5edae.zip
Parse percent values in CSS alpha components
* lisp/textmodes/css-mode.el (css--rgb-color): Support parsing percent values in the alpha component. * test/lisp/textmodes/css-mode-tests.el (css-test-rgb-to-named-color-or-hex, css-test-rgb-parser): Update for the above changes.
-rw-r--r--lisp/textmodes/css-mode.el10
-rw-r--r--test/lisp/textmodes/css-mode-tests.el16
2 files changed, 14 insertions, 12 deletions
diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el
index 1d13070f120..7e997ac2c0f 100644
--- a/lisp/textmodes/css-mode.el
+++ b/lisp/textmodes/css-mode.el
@@ -954,11 +954,11 @@ the returned hex string."
954 (let* ((is-percent (match-beginning 1)) 954 (let* ((is-percent (match-beginning 1))
955 (str (match-string (if is-percent 1 2))) 955 (str (match-string (if is-percent 1 2)))
956 (number (string-to-number str))) 956 (number (string-to-number str)))
957 (when is-percent 957 (if is-percent
958 (setq number (* 255 (/ number 100.0)))) 958 (setq number (* 255 (/ number 100.0)))
959 (if (and include-alpha (= iter 3)) 959 (when (and include-alpha (= iter 3))
960 (push (round (* number 255)) result) 960 (setq number (* number 255))))
961 (push (min (max 0 (truncate number)) 255) result)) 961 (push (min (max 0 (round number)) 255) result)
962 (goto-char (match-end 0)) 962 (goto-char (match-end 0))
963 (css--color-skip-blanks) 963 (css--color-skip-blanks)
964 (cl-incf iter) 964 (cl-incf iter)
diff --git a/test/lisp/textmodes/css-mode-tests.el b/test/lisp/textmodes/css-mode-tests.el
index 537a88ec52b..272d281217e 100644
--- a/test/lisp/textmodes/css-mode-tests.el
+++ b/test/lisp/textmodes/css-mode-tests.el
@@ -293,7 +293,9 @@
293 ("rgb(255, 255, 255)" "white") 293 ("rgb(255, 255, 255)" "white")
294 ("rgb(255, 255, 240)" "ivory") 294 ("rgb(255, 255, 240)" "ivory")
295 ("rgb(18, 52, 86)" "#123456") 295 ("rgb(18, 52, 86)" "#123456")
296 ("rgba(18, 52, 86, 0.5)" "#12345680"))) 296 ("rgba(18, 52, 86, 0.5)" "#12345680")
297 ("rgba(18, 52, 86, 50%)" "#12345680")
298 ("rgba(50%, 50%, 50%, 50%)" "#80808080")))
297 (with-temp-buffer 299 (with-temp-buffer
298 (css-mode) 300 (css-mode)
299 (insert (nth 0 item)) 301 (insert (nth 0 item))
@@ -330,11 +332,11 @@
330(ert-deftest css-test-rgb-parser () 332(ert-deftest css-test-rgb-parser ()
331 (with-temp-buffer 333 (with-temp-buffer
332 (css-mode) 334 (css-mode)
333 (dolist (input '("255, 0, 127" 335 (dolist (input '("255, 0, 128"
334 "255, /* comment */ 0, 127" 336 "255, /* comment */ 0, 128"
335 "255 0 127" 337 "255 0 128"
336 "255, 0, 127, 0.75" 338 "255, 0, 128, 0.75"
337 "255 0 127 / 0.75" 339 "255 0 128 / 0.75"
338 "100%, 0%, 50%" 340 "100%, 0%, 50%"
339 "100%, 0%, 50%, 0.115" 341 "100%, 0%, 50%, 0.115"
340 "100% 0% 50%" 342 "100% 0% 50%"
@@ -342,7 +344,7 @@
342 (erase-buffer) 344 (erase-buffer)
343 (save-excursion 345 (save-excursion
344 (insert input ")")) 346 (insert input ")"))
345 (should (equal (css--rgb-color) "#ff007f"))))) 347 (should (equal (css--rgb-color) "#ff0080")))))
346 348
347(ert-deftest css-test-hsl-parser () 349(ert-deftest css-test-hsl-parser ()
348 (with-temp-buffer 350 (with-temp-buffer