当前位置: 首页>>代码示例>>Java>>正文


Java XTokenQueue类代码示例

本文整理汇总了Java中us.codecraft.xsoup.XTokenQueue的典型用法代码示例。如果您正苦于以下问题:Java XTokenQueue类的具体用法?Java XTokenQueue怎么用?Java XTokenQueue使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


XTokenQueue类属于us.codecraft.xsoup包,在下文中一共展示了XTokenQueue类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: byFunction

import us.codecraft.xsoup.XTokenQueue; //导入依赖的package包/类
private Evaluator byFunction(XTokenQueue predicatesQueue) {
    for (Map.Entry<String, FunctionEvaluator> entry : FUNCTION_MAPPING.entrySet()) {
        if (predicatesQueue.matchChomp(entry.getKey())) {
            String paramString = predicatesQueue.chompBalanced('(', ')');
            List<String> params = XTokenQueue.trimQuotes(XTokenQueue.parseFuncionParams(paramString));

            if (params.get(0).startsWith("@")) {
                params.set(0, params.get(0).substring(1));
                return entry.getValue().call(params.toArray(new String[0]));
            } else {
                return null;
            }
        }
    }

    throw new Selector.SelectorParseException("Could not parse query '%s': unexpected token at '%s'", query, predicatesQueue.remainder());
}
 
开发者ID:code4craft,项目名称:xsoup,代码行数:18,代码来源:XPathParser.java

示例2: functionRegex

import us.codecraft.xsoup.XTokenQueue; //导入依赖的package包/类
private void functionRegex(String remainder) {
    Validate.isTrue(remainder.endsWith(")"), "Unclosed bracket for function! " + remainder);
    List<String> params = XTokenQueue.trimQuotes(XTokenQueue.parseFuncionParams(remainder.substring("regex(".length(), remainder.length() - 1)));
    if (params.size() == 1) {
        elementOperator = new ElementOperator.Regex(params.get(0));
    } else if (params.size() == 2) {
        if (params.get(0).startsWith("@")) {
            elementOperator = new ElementOperator.Regex(params.get(1), params.get(0).substring(1));
        } else {
            elementOperator = new ElementOperator.Regex(params.get(0), null, Integer.parseInt(params.get(1)));
        }
    } else if (params.size() == 3) {
        elementOperator = new ElementOperator.Regex(params.get(1), params.get(0).substring(1), Integer.parseInt(params.get(2)));
    } else {
        throw new Selector.SelectorParseException("Unknown usage for regex()" + remainder);
    }
}
 
开发者ID:code4craft,项目名称:xsoup,代码行数:18,代码来源:XPathParser.java

示例3: 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);
}
 
开发者ID:fengzhizi715,项目名称:NetDiscovery,代码行数:15,代码来源:Json.java

示例4: 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();
}
 
开发者ID:code4craft,项目名称:xsoup,代码行数:34,代码来源:XPathParser.java

示例5: chompEqualValue

import us.codecraft.xsoup.XTokenQueue; //导入依赖的package包/类
private String chompEqualValue(XTokenQueue cq) {
    String value;
    if (cq.matchChomp("'")) {
        value = cq.chompTo("'");
    } else if (cq.matchChomp("\"")) {
        value = cq.chompTo("\"");
    } else if (cq.containsAny(" ")) {
        value = cq.chompTo(" ");
    } else {
        value = cq.remainder();
    }
    return value;
}
 
开发者ID:code4craft,项目名称:xsoup,代码行数:14,代码来源:XPathParser.java

示例6: XPathParser

import us.codecraft.xsoup.XTokenQueue; //导入依赖的package包/类
public XPathParser(String xpathStr) {
    this.query = xpathStr;
    this.tq = new XTokenQueue(xpathStr);
}
 
开发者ID:code4craft,项目名称:xsoup,代码行数:5,代码来源:XPathParser.java

示例7: 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;
}
 
开发者ID:code4craft,项目名称:xsoup,代码行数:46,代码来源:XPathParser.java


注:本文中的us.codecraft.xsoup.XTokenQueue类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。