/** * Determines if the given Char is a valid identifier part. * <p> * By default, letters, digits and '_' are valid identifier parts. * * @param current the character to check * @return <tt>true</tt> if the given Char is a valid identifier part, <tt>false</tt> otherwise */ protected boolean isIdentifierChar(Char current) { return current.isDigit() || current.isLetter() || current.is('_'); }
@Override protected boolean isIdentifierChar(Char current) { if (super.isIdentifierChar(current)) { return true; } // CSS selectors can contain "-", "." or "#" as long as it is not the last character of the token return (current.is('-') || current.is('.') || current.is('#')) && !input.next().isWhitepace(); }
/** * Determines if the given Char is a valid identifier part. * <p> * By default, letters, digits and '_' are valid identifier parts. * * @param current the character to check * @return <tt>true</tt> if the given Char is a valid identifier part, <tt>false</tt> otherwise */ protected boolean isIdentifierChar(Char current) { return current.isDigit() || current.isLetter() || current.is('_'); }
@Override protected Token fetchNumber() { Token token = super.fetchNumber(); // If a number is immediately followed by % or a text like "px" - this belongs to the numeric token. if (input.current().is('%')) { token.addToContent(input.consume()); return token; } while (input.current().isLetter()) { token.addToContent(input.consume()); } return token; }
@Override protected boolean isSymbolCharacter(Char ch) { return super.isSymbolCharacter(ch) && !ch.is('#'); }
@Override protected boolean isAtBracket(boolean inSymbol) { // Treat % as single symbol so that 10%; is not tokenized to // "10", "%;" but to "10", "%", ";" // The title of this method might be a bit misleading return super.isAtBracket(inSymbol) || input.current().is('%'); }
private C parseBrackets() { reader.consume(); C inner = parseOR(); if (reader.current().is(')')) { reader.consume(); } return inner; }
protected QueryBuilder parseTokenInBrackets(LookaheadReader reader) { reader.consume(); QueryBuilder qb = parseOR(reader); if (reader.current().is(')')) { reader.consume(); } return qb; }
@Override protected Token fetchSymbol() { Token result = Token.create(Token.TokenType.SYMBOL, input.current()); result.addToTrigger(input.consume()); while (isSymbolCharacter(input.current()) && !input.current().is(',')) { result.addToTrigger(input.consume()); } return result; } }