function () {
                var c = input.charAt(i);

                if (c === '>' || c === '+' || c === '~' || c === '|' || c === '^') {
                    i++;
                    if (input.charAt(i) === '^') {
                        c = '^^';
                        i++;
                    }
                    while (isWhitespace(input, i)) { i++; }
                    return new(tree.Combinator)(c);
                } else if (isWhitespace(input, i - 1)) {
                    return new(tree.Combinator)(" ");
                } else {
                    return new(tree.Combinator)(null);
                }
            }
function () {
                var c = input.charAt(i);

                if (c === '>' || c === '+' || c === '~' || c === '|' || c === '^') {
                    i++;
                    if (input.charAt(i) === '^') {
                        c = '^^';
                        i++;
                    }
                    while (isWhitespace(input, i)) { i++; }
                    return new(tree.Combinator)(c);
                } else if (isWhitespace(input, i - 1)) {
                    return new(tree.Combinator)(" ");
                } else {
                    return new(tree.Combinator)(null);
                }
            }
function ( ) { var c = input . charAt ( i ) ; if ( c === '>' || c === '+' || c === '~' || c === '|' || c === '^' ) { i ++ ; if ( input . charAt ( i ) === '^' ) { c = '^^' ; i ++ ; } while ( isWhitespace ( input , i ) ) { i ++ ; } return new ( tree . Combinator ) ( c ) ; } else if ( isWhitespace ( input , i - 1 ) ) { return new ( tree . Combinator ) ( " " ) ; } else { return new ( tree . Combinator ) ( null ) ; } }
Combinators combine elements together, in a Selector.  Because our parser isn't white-space sensitive, special care has to be taken, when parsing the descendant combinator, ` `, as it's an empty space. We have to check the previous character in the input, to see if it's a ` ` character. More info on how we deal with this in *combinator.js*.
Combinators combine elements together in a Selector . Because our parser isn t white - space sensitive special care has to be taken when parsing the descendant combinator as it s an empty space . We have to check the previous character in the input to see if it s a character . More info on how we deal with this in * combinator . js * .
returns a combinator