| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- import hasInterpolation from './hasInterpolation.mjs';
- /**
- * Check whether a value is standard
- *
- * @param {string} value
- * @returns {boolean}
- */
- export default function isStandardSyntaxValue(value) {
- let normalizedValue = value;
- // Ignore operators before variables (example -$variable)
- if (/^[-+*/]/.test(value.charAt(0))) {
- normalizedValue = normalizedValue.slice(1);
- }
- // SCSS variable (example $variable)
- // styled component interpolation (example ${foo => foo.bar})
- if (normalizedValue.startsWith('$')) {
- return false;
- }
- // SCSS namespace (example namespace.$variable)
- if (/^.+\.\$/.test(value)) {
- return false;
- }
- // SCSS namespace (example namespace.function-name())
- if (/^.+\.[-\w]+\(/.test(value)) {
- return false;
- }
- // Less variable
- if (normalizedValue.startsWith('@')) {
- return false;
- }
- // SCSS or Less interpolation
- if (hasInterpolation(normalizedValue)) {
- return false;
- }
- // WebExtension replacement keyword used by Chrome/Firefox
- // more information: https://developer.chrome.com/extensions/i18n
- // and https://github.com/stylelint/stylelint/issues/4707
- if (/__MSG_\S+__/.test(value)) {
- return false;
- }
- return true;
- }
|