From fc0c5bacf5fdddfd7d4e639a5c325b444488cc8e Mon Sep 17 00:00:00 2001 From: Boris Zhidkov Date: Thu, 22 Jul 2021 13:03:27 +0300 Subject: [PATCH 1/4] Added ignoreProperties option to number-max-precision rule --- .../number-max-precision/__tests__/index.js | 100 ++++++++++++++++++ lib/rules/number-max-precision/index.js | 7 ++ 2 files changed, 107 insertions(+) diff --git a/lib/rules/number-max-precision/__tests__/index.js b/lib/rules/number-max-precision/__tests__/index.js index 619b1ec084..cbf031d359 100644 --- a/lib/rules/number-max-precision/__tests__/index.js +++ b/lib/rules/number-max-precision/__tests__/index.js @@ -231,3 +231,103 @@ testRule({ }, ], }); + +testRule({ + ruleName, + config: [0, { ignoreProperties: ['letter-spacing', '/^my-/'] }], + + accept: [ + { + code: 'a { letter-spacing: 1.2px; }', + }, + { + code: 'a { my-prop: 3.1%; }', + }, + ], + + reject: [ + { + code: 'a { top: 3.1px; }', + message: messages.expected(3.1, 0), + line: 1, + column: 10, + }, + { + code: 'a { top: 3.123em; }', + message: messages.expected(3.123, 0), + line: 1, + column: 10, + }, + { + code: 'a { myprop: 6.123px 3.1234px; }', + warnings: [ + { + message: messages.expected(6.123, 0), + line: 1, + column: 13, + }, + { + message: messages.expected(3.1234, 0), + line: 1, + column: 21, + }, + ], + }, + ], +}); + +testRule({ + ruleName, + config: [ + 0, + { + ignoreProperties: ['letter-spacing', '/^my-/'], + ignoreUnits: ['%', '/^my-/'], + }, + ], + + accept: [ + { + code: 'a { letter-spacing: 1.2px; }', + }, + { + code: 'a { my-prop: 3.1%; }', + }, + { + code: 'a { top: 1.2%; }', + }, + { + code: 'a { top: 1.2my-unit; }', + }, + ], + + reject: [ + { + code: 'a { top: 3.1px; }', + message: messages.expected(3.1, 0), + line: 1, + column: 10, + }, + { + code: 'a { top: 3.123em; }', + message: messages.expected(3.123, 0), + line: 1, + column: 10, + }, + { + code: 'a { myprop: 6.123px 3.1234px; }', + warnings: [ + { + message: messages.expected(6.123, 0), + line: 1, + column: 13, + }, + { + message: messages.expected(3.1234, 0), + line: 1, + column: 21, + }, + ], + }, + ], +}); diff --git a/lib/rules/number-max-precision/index.js b/lib/rules/number-max-precision/index.js index 311d107538..1342613776 100644 --- a/lib/rules/number-max-precision/index.js +++ b/lib/rules/number-max-precision/index.js @@ -32,6 +32,7 @@ function rule(precision, options) { optional: true, actual: options, possible: { + ignoreProperties: [_.isString, _.isRegExp], ignoreUnits: [_.isString, _.isRegExp], }, }, @@ -57,6 +58,12 @@ function rule(precision, options) { return; } + const prop = node.prop; + + if (optionsMatches(options, 'ignoreProperties', prop)) { + return; + } + valueParser(value).walk((valueNode) => { const unit = getUnitFromValueNode(valueNode); From 1f7514cac85c8604d04e38a0a2161152c8ce636a Mon Sep 17 00:00:00 2001 From: Boris Zhidkov Date: Tue, 3 Aug 2021 17:45:21 +0300 Subject: [PATCH 2/4] Add Added ignoreProperties option to number-max-precision rule README --- lib/rules/number-max-precision/README.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/lib/rules/number-max-precision/README.md b/lib/rules/number-max-precision/README.md index c62309264c..307330cc1c 100644 --- a/lib/rules/number-max-precision/README.md +++ b/lib/rules/number-max-precision/README.md @@ -46,6 +46,30 @@ a { top: 3.24px; } ## Optional secondary options +### `ignoreProperties: ["/regex/", /regex/, "string"]` + +Ignore the precision of numbers for the specified properties. + +Given: + +``` +["transition"] +``` + +The following patterns are considered violations: + + +```css +a { -o-transition: all 4.5s ease; } +``` + +The following patterns are _not_ considered violations: + + +```css +a { transition: all 4.5s ease; } +``` + ### `ignoreUnits: ["/regex/", /regex/, "string"]` Ignore the precision of numbers for values with the specified units. From 5ebc78a9b0ad67d560e9846ee4e02bdd8cda05b0 Mon Sep 17 00:00:00 2001 From: Boris Zhidkov Date: Thu, 5 Aug 2021 19:07:54 +0300 Subject: [PATCH 3/4] Apply suggestions from code review Co-authored-by: Richard Hallows --- lib/rules/number-max-precision/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/rules/number-max-precision/README.md b/lib/rules/number-max-precision/README.md index 2e11483433..95753113a4 100644 --- a/lib/rules/number-max-precision/README.md +++ b/lib/rules/number-max-precision/README.md @@ -50,6 +50,8 @@ a { top: 3.24px; } Ignore the precision of numbers for the specified properties. +For example, with `0`. + Given: ``` @@ -60,7 +62,7 @@ The following patterns are considered violations: ```css -a { -o-transition: all 4.5s ease; } +a { top: 10.5px; } ``` The following patterns are _not_ considered violations: From 8884e56a650cccfd1d053c732e9cc30603980a45 Mon Sep 17 00:00:00 2001 From: Boris Zhidkov Date: Mon, 9 Aug 2021 15:26:54 +0300 Subject: [PATCH 4/4] Update lib/rules/number-max-precision/README.md Co-authored-by: Masafumi Koba <473530+ybiquitous@users.noreply.github.com> --- lib/rules/number-max-precision/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rules/number-max-precision/README.md b/lib/rules/number-max-precision/README.md index 95753113a4..9415d59ccf 100644 --- a/lib/rules/number-max-precision/README.md +++ b/lib/rules/number-max-precision/README.md @@ -54,7 +54,7 @@ For example, with `0`. Given: -``` +```json ["transition"] ```