Skip to content

Commit ee11fcc

Browse files
authored
Merge pull request #257 from romainmenke/add-support-for-hue-turn-grad-rad--unassuming-eastern-gorilla-319fb36c89
css color : add support for hue rad|grad|turn
2 parents 45016d3 + d55e342 commit ee11fcc

File tree

2 files changed

+24
-3
lines changed

2 files changed

+24
-3
lines changed

src/languageFacts/colors.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,10 +190,24 @@ function getNumericValue(node: nodes.Node, factor: number) {
190190

191191
function getAngle(node: nodes.Node) {
192192
const val = node.getText();
193-
const m = val.match(/^([-+]?[0-9]*\.?[0-9]+)(deg)?$/);
193+
const m = val.match(/^([-+]?[0-9]*\.?[0-9]+)(deg|rad|grad|turn)?$/);
194194
if (m) {
195-
return parseFloat(val) % 360;
195+
switch (m[2]) {
196+
case 'deg':
197+
return parseFloat(val) % 360;
198+
case 'rad':
199+
return (parseFloat(val) * 180 / Math.PI) % 360;
200+
case 'grad':
201+
return (parseFloat(val) * 0.9) % 360;
202+
case 'turn':
203+
return (parseFloat(val) * 360) % 360;
204+
default:
205+
if ('undefined' === typeof m[2]) {
206+
return parseFloat(val) % 360;
207+
}
208+
}
196209
}
210+
197211
throw new Error();
198212
}
199213

src/test/css/languageFacts.test.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,13 @@ suite('CSS - Language Facts', () => {
103103
assertColor(parser, '#main { color: hsl(180,100%,25%, 0.33) }', 'hsl', colorFrom256RGB(0, 0.5 * 255, 0.5 * 255, 0.33));
104104
assertColor(parser, '#main { color: hsl(30,20%,30%, 0) }', 'hsl', colorFrom256RGB(92, 77, 61, 0));
105105
assertColor(parser, '#main { color: hsla(38deg,89%,89%, 0) }', 'hsl', colorFrom256RGB(252, 234, 202, 0));
106+
assertColor(parser, '#main { color: hsl(0.5turn, 100%, 50%) }', 'hsl', colorFrom256RGB(0, 255, 255, 1));
107+
assertColor(parser, '#main { color: hsl(1.5turn, 100%, 50%) }', 'hsl', colorFrom256RGB(0, 255, 255, 1));
108+
assertColor(parser, '#main { color: hsl(200grad, 100%, 50%) }', 'hsl', colorFrom256RGB(0, 255, 255, 1));
109+
assertColor(parser, '#main { color: hsl(3.14159rad, 100%, 50%) }', 'hsl', colorFrom256RGB(0, 255, 255, 1));
110+
assertColor(parser, '#main { color: hsl(0.13turn, 97%, 32%) }', 'hsl', colorFrom256RGB(161, 126, 2, 1));
111+
assertColor(parser, '#main { color: hsl(124grad, 71%, 45%) }', 'hsl', colorFrom256RGB(56, 196, 33, 1));
112+
assertColor(parser, '#main { color: hsl(2.35112rad, 76%, 63%) }', 'hsl', colorFrom256RGB(89, 232, 124, 1));
106113
assertColor(parser, '#main { color: rgba(0.7) }', 'rgba', null, true);
107114
assertColor(parser, '[green] {}', 'green', null);
108115
assertColor(parser, '[data-color=green] {}', 'green', null);
@@ -159,4 +166,4 @@ suite('CSS - Language Facts', () => {
159166
assertHSLValue(hslFromColor(colorFrom256RGB(0, 128, 128, 1)), { h: 180, s: 1, l: 0.251, a: 1 });
160167
assertHSLValue(hslFromColor(colorFrom256RGB(0, 0, 128, 1)), { h: 240, s: 1, l: 0.251, a: 1 });
161168
});
162-
});
169+
});

0 commit comments

Comments
 (0)