Skip to content

Commit

Permalink
use .some() instead of for loop
Browse files Browse the repository at this point in the history
Also pseudo-spelling errors
  • Loading branch information
Brandon Dail authored and Brandon Dail committed Sep 12, 2016
1 parent 4663aaa commit 2d94e53
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 36 deletions.
16 changes: 6 additions & 10 deletions src/Utils.js
Expand Up @@ -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;
}
Expand All @@ -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;
Expand Down
52 changes: 26 additions & 26 deletions test/Utils-spec.jsx
Expand Up @@ -9,7 +9,7 @@ import {
coercePropValue,
getNode,
nodeEqual,
isPsuedoClassSelector,
isPseudoClassSelector,
propFromEvent,
SELECTOR,
selectorType,
Expand Down Expand Up @@ -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');
});

});
Expand Down

0 comments on commit 2d94e53

Please sign in to comment.