本文整理匯總了Java中us.codecraft.xsoup.XTokenQueue.consumeWhitespace方法的典型用法代碼示例。如果您正苦於以下問題:Java XTokenQueue.consumeWhitespace方法的具體用法?Java XTokenQueue.consumeWhitespace怎麽用?Java XTokenQueue.consumeWhitespace使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類us.codecraft.xsoup.XTokenQueue
的用法示例。
在下文中一共展示了XTokenQueue.consumeWhitespace方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。
示例1: removePadding
import us.codecraft.xsoup.XTokenQueue; //導入方法依賴的package包/類
/**
* remove padding for JSONP
* @param padding padding
* @return json after padding removed
*/
public Json removePadding(String padding) {
String text = getFirstSourceText();
XTokenQueue tokenQueue = new XTokenQueue(text);
tokenQueue.consumeWhitespace();
tokenQueue.consume(padding);
tokenQueue.consumeWhitespace();
String chompBalanced = tokenQueue.chompBalancedNotInQuotes('(', ')');
return new Json(chompBalanced);
}
示例2: consumePredicates
import us.codecraft.xsoup.XTokenQueue; //導入方法依賴的package包/類
private Evaluator consumePredicates(String queue) {
XTokenQueue predicatesQueue = new XTokenQueue(queue);
EvaluatorStack evaluatorStack = new EvaluatorStack();
Operation currentOperation = null;
predicatesQueue.consumeWhitespace();
while (!predicatesQueue.isEmpty()) {
if (predicatesQueue.matchChomp("and")) {
currentOperation = Operation.AND;
} else if (predicatesQueue.matchChomp("or")) {
currentOperation = Operation.OR;
} else {
if (currentOperation == null && evaluatorStack.size() > 0) {
throw new IllegalArgumentException(String.format("Need AND/OR between two predicate! %s", predicatesQueue.remainder()));
}
Evaluator evaluator;
if (predicatesQueue.matches("(")) {
evaluator = consumePredicates(predicatesQueue.chompBalanced('(', ')'));
} else if (predicatesQueue.matches("@")) {
evaluator = byAttribute(predicatesQueue);
} else if (predicatesQueue.matchesRegex("\\w+.*")) {
evaluator = byFunction(predicatesQueue);
} else {
throw new Selector.SelectorParseException("Could not parse query '%s': unexpected token at '%s'", query, predicatesQueue.remainder());
}
evaluatorStack.calc(evaluator, currentOperation);
//consume operator
currentOperation = null;
}
predicatesQueue.consumeWhitespace();
}
evaluatorStack.mergeOr();
return evaluatorStack.peek();
}
示例3: byAttribute
import us.codecraft.xsoup.XTokenQueue; //導入方法依賴的package包/類
private Evaluator byAttribute(XTokenQueue cq) {
cq.matchChomp("@");
String key = cq.consumeToAny("=", "!=", "^=", "$=", "*=", "~="); // eq, not, start, end, contain, match, (no val)
Validate.notEmpty(key);
cq.consumeWhitespace();
Evaluator evaluator;
if (cq.isEmpty()) {
if ("*".equals(key)) {
evaluator = new XEvaluators.HasAnyAttribute();
} else {
evaluator = new Evaluator.Attribute(key);
}
} else {
if (cq.matchChomp("=")) {
String value = chompEqualValue(cq);
//to support select one class out of all
if (key.equals("class")) {
String className = XTokenQueue.trimQuotes(value);
if (!className.contains(" ")) {
evaluator = new Evaluator.Class(className);
} else {
evaluator = new Evaluator.AttributeWithValue(key, className);
}
} else {
evaluator = new Evaluator.AttributeWithValue(key, XTokenQueue.trimQuotes(value));
}
} else if (cq.matchChomp("!="))
evaluator = new Evaluator.AttributeWithValueNot(key, XTokenQueue.trimQuotes(chompEqualValue(cq)));
else if (cq.matchChomp("^="))
evaluator = new Evaluator.AttributeWithValueStarting(key, XTokenQueue.trimQuotes(chompEqualValue(cq)));
else if (cq.matchChomp("$="))
evaluator = new Evaluator.AttributeWithValueEnding(key, XTokenQueue.trimQuotes(chompEqualValue(cq)));
else if (cq.matchChomp("*="))
evaluator = new Evaluator.AttributeWithValueContaining(key, XTokenQueue.trimQuotes(chompEqualValue(cq)));
else if (cq.matchChomp("~="))
evaluator = new Evaluator.AttributeWithValueMatching(key, Pattern.compile(XTokenQueue.trimQuotes(chompEqualValue(cq))));
else
throw new Selector.SelectorParseException("Could not parse attribute query '%s': unexpected token at '%s'", query, chompEqualValue(cq));
}
return evaluator;
}