From cff45e6f4e6a684d233140b5ab3edbf73fa5edae Mon Sep 17 00:00:00 2001 From: =?utf8?q?Simen=20Heggest=C3=B8yl?= Date: Sat, 13 Jan 2018 09:41:47 +0100 Subject: [PATCH] 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. --- lisp/textmodes/css-mode.el | 10 +++++----- test/lisp/textmodes/css-mode-tests.el | 16 +++++++++------- 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." (let* ((is-percent (match-beginning 1)) (str (match-string (if is-percent 1 2))) (number (string-to-number str))) - (when is-percent - (setq number (* 255 (/ number 100.0)))) - (if (and include-alpha (= iter 3)) - (push (round (* number 255)) result) - (push (min (max 0 (truncate number)) 255) result)) + (if is-percent + (setq number (* 255 (/ number 100.0))) + (when (and include-alpha (= iter 3)) + (setq number (* number 255)))) + (push (min (max 0 (round number)) 255) result) (goto-char (match-end 0)) (css--color-skip-blanks) (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 @@ ("rgb(255, 255, 255)" "white") ("rgb(255, 255, 240)" "ivory") ("rgb(18, 52, 86)" "#123456") - ("rgba(18, 52, 86, 0.5)" "#12345680"))) + ("rgba(18, 52, 86, 0.5)" "#12345680") + ("rgba(18, 52, 86, 50%)" "#12345680") + ("rgba(50%, 50%, 50%, 50%)" "#80808080"))) (with-temp-buffer (css-mode) (insert (nth 0 item)) @@ -330,11 +332,11 @@ (ert-deftest css-test-rgb-parser () (with-temp-buffer (css-mode) - (dolist (input '("255, 0, 127" - "255, /* comment */ 0, 127" - "255 0 127" - "255, 0, 127, 0.75" - "255 0 127 / 0.75" + (dolist (input '("255, 0, 128" + "255, /* comment */ 0, 128" + "255 0 128" + "255, 0, 128, 0.75" + "255 0 128 / 0.75" "100%, 0%, 50%" "100%, 0%, 50%, 0.115" "100% 0% 50%" @@ -342,7 +344,7 @@ (erase-buffer) (save-excursion (insert input ")")) - (should (equal (css--rgb-color) "#ff007f"))))) + (should (equal (css--rgb-color) "#ff0080"))))) (ert-deftest css-test-hsl-parser () (with-temp-buffer -- 2.39.5