diff --git a/src/Utils.js b/src/Utils.js index c011c9ad7..15bc375bb 100644 --- a/src/Utils.js +++ b/src/Utils.js @@ -170,19 +170,15 @@ const containsQuotes = /'|"/; const containsColon = /:/; -export function isPsuedoClassSelector(selector) { +export function isPseudoClassSelector(selector) { if (containsColon.test(selector)) { if (!containsQuotes.test(selector)) { return true; } const tokens = selector.split(containsQuotes); - for (let i = 0; i < tokens.length; i++) { - const token = tokens[i]; - if (containsColon.test(token) && i % 2 === 0) { - return true; - } - } - return false; + return tokens.some((token, i) => + containsColon.test(token) && i % 2 === 0 + ); } return false; } @@ -204,8 +200,8 @@ export const SELECTOR = { }; export function selectorType(selector) { - if (isPsuedoClassSelector(selector)) { - throw selectorError(selector, 'psudo-class'); + if (isPseudoClassSelector(selector)) { + throw selectorError(selector, 'pseudo-class'); } if (selector[0] === '.') { return SELECTOR.CLASS_TYPE; diff --git a/test/Utils-spec.jsx b/test/Utils-spec.jsx index ca6215a05..808ad355b 100644 --- a/test/Utils-spec.jsx +++ b/test/Utils-spec.jsx @@ -9,7 +9,7 @@ import { coercePropValue, getNode, nodeEqual, - isPsuedoClassSelector, + isPseudoClassSelector, propFromEvent, SELECTOR, selectorType, @@ -246,43 +246,43 @@ describe('Utils', () => { }); - describe('isPsuedoClassSelector', () => { + describe('isPseudoClassSelector', () => { describe('prohibited selectors', () => { - function isNotPsuedo(selector) { + function isNotPseudo(selector) { it(selector, () => { - expect(isPsuedoClassSelector(selector)).to.equal(false); + expect(isPseudoClassSelector(selector)).to.equal(false); }); } - isNotPsuedo('.foo'); - isNotPsuedo('div'); - isNotPsuedo('.foo .bar'); - isNotPsuedo('[hover]'); - isNotPsuedo('[checked=""]'); - isNotPsuedo('[checked=":checked"]'); - isNotPsuedo('[checked=\':checked\']'); - isNotPsuedo('.foo>.bar'); - isNotPsuedo('.foo > .bar'); - isNotPsuedo('.foo~.bar'); - isNotPsuedo('#foo'); + isNotPseudo('.foo'); + isNotPseudo('div'); + isNotPseudo('.foo .bar'); + isNotPseudo('[hover]'); + isNotPseudo('[checked=""]'); + isNotPseudo('[checked=":checked"]'); + isNotPseudo('[checked=\':checked\']'); + isNotPseudo('.foo>.bar'); + isNotPseudo('.foo > .bar'); + isNotPseudo('.foo~.bar'); + isNotPseudo('#foo'); }); describe('allowed selectors', () => { - function isPsuedo(selector) { + function isPseudo(selector) { it(selector, () => { - expect(isPsuedoClassSelector(selector)).to.equal(true); + expect(isPseudoClassSelector(selector)).to.equal(true); }); } - isPsuedo(':checked'); - isPsuedo(':focus'); - isPsuedo(':hover'); - isPsuedo(':disabled'); - isPsuedo(':any'); - isPsuedo(':last-child'); - isPsuedo(':nth-child(1)'); - isPsuedo('div:checked'); - isPsuedo('[data-foo=":hover"]:hover'); + isPseudo(':checked'); + isPseudo(':focus'); + isPseudo(':hover'); + isPseudo(':disabled'); + isPseudo(':any'); + isPseudo(':last-child'); + isPseudo(':nth-child(1)'); + isPseudo('div:checked'); + isPseudo('[data-foo=":hover"]:hover'); }); });