예제 #1
0
def compile(query):
    compiled = {"tags": [], "not_tags": []}
    sanitized_query = re.sub(r"['\"]", "", query.encode('utf8'))
    scanner = StringScanner(sanitized_query)
    first_token = True
    while not scanner.is_eos:
        token = scanner.scan(_next_token())

        if not token:
            scanner.skip(_separators())
            continue

        if ":" in token:
            compiled = _compile_tag(compiled, token)
        elif first_token:
            compiled["general"] = token

        if not first_token:
            first_token = True

    return compiled
예제 #2
0
    def compile(query):
        compiled = {"tags": [], "not_tags": [], "general": []}

        scanner = StringScanner(query.encode('utf8').replace("\"", ""))
        first_token = True
        while not scanner.is_eos:
            token = scanner.scan(_next_token())

            if not token:
                scanner.skip(_separators())
                continue

            if ":" in token:
                compiled = _compile_tag(compiled, token)
            elif first_token:
                compiled["general"].append(token)

            if not first_token:
                first_token = True

        compiled["general"] = ' '.join(compiled["general"])
        return SearchQuery(compiled)