diff options
| author | Simen Heggestøyl | 2018-01-13 09:41:47 +0100 |
|---|---|---|
| committer | Simen Heggestøyl | 2018-01-21 14:20:56 +0100 |
| commit | cff45e6f4e6a684d233140b5ab3edbf73fa5edae (patch) | |
| tree | b1e5ad9b3946aa9d62b188ed6f67ca3c6931b314 | |
| parent | 64c846738617d1d037eac0cefb6586c04317b0a1 (diff) | |
| download | emacs-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.el | 10 | ||||
| -rw-r--r-- | 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." | |||
| 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 |