コード例 #1
0
ファイル: core.py プロジェクト: abbeyj/dxr
def _path_trigram_filter(path, is_case_sensitive):
    """Return an ES filter clause that returns docs whose paths match the
    given path all the way to their ends.

    If a given path starts with a /, the user is explicitly requesting a match
    starting at the root level.

    """
    if path.startswith('/'):
        path = path[1:]  # Leading slashes aren't stored in the index.
        regex = '^{0}$'  # Insist it start at the beginning.
    else:
        regex = '(/|^){0}$'  # Start at any path segment.

    return es_regex_filter(
        regex_grammar.parse(
            regex.format(
                re.escape(
                    path.encode('ascii', 'backslashreplace')
                )
            )
        ),
        'path',
        is_case_sensitive
    )
コード例 #2
0
ファイル: core.py プロジェクト: nbstar/dxr
 def filter(self):
     glob = self._term["arg"]
     try:
         return es_regex_filter(
             regex_grammar.parse(glob_to_regex(glob)), "path", is_case_sensitive=self._term["case_sensitive"]
         )
     except NoTrigrams:
         raise BadTerm("Path globs need at least 3 literal characters in a row " "for speed.")
コード例 #3
0
 def filter(self):
     try:
         return es_regex_filter(
             self._parsed_regex,
             'content',
             is_case_sensitive=self._term['case_sensitive'])
     except NoTrigrams:
         raise BadTerm('Regexes need at least 3 literal characters in a  '
                       'row for speed.')
コード例 #4
0
ファイル: core.py プロジェクト: jbradberry/dxr
 def filter(self):
     try:
         return es_regex_filter(
             self._parsed_regex,
             'content',
             is_case_sensitive=self._term['case_sensitive'])
     except NoTrigrams:
         raise BadTerm('Regexes need at least 3 literal characters in a  '
                       'row for speed.')
コード例 #5
0
 def filter(self):
     glob = self._term['arg']
     try:
         return es_regex_filter(
             regex_grammar.parse(glob_to_regex(glob)),
             'path',
             is_case_sensitive=self._term['case_sensitive'])
     except NoTrigrams:
         raise BadTerm('Path globs need at least 3 literal characters in a row '
                       'for speed.')
コード例 #6
0
ファイル: core.py プロジェクト: bozzmob/dxr
 def filter(self):
     glob = self._term['arg']
     try:
         return es_regex_filter(
             regex_grammar.parse(glob_to_regex(glob)),
             'path',
             is_case_sensitive=self._term['case_sensitive'])
     except NoTrigrams:
         raise BadTerm('Path globs need at least 3 literal characters in a row '
                       'for speed.')
コード例 #7
0
ファイル: core.py プロジェクト: jbradberry/dxr
    def _regex_filter(self, path_seg_property_name, no_trigrams_error_text):
        """Return an ES regex filter that matches this filter's glob against the
        path segment at path_seg_property_name.

        """
        glob = self._term['arg']
        try:
            return es_regex_filter(
                regex_grammar.parse(glob_to_regex(glob)),
                path_seg_property_name,
                is_case_sensitive=self._term['case_sensitive'])
        except NoTrigrams:
            raise BadTerm(no_trigrams_error_text)
コード例 #8
0
ファイル: core.py プロジェクト: na-g/dxr
    def _regex_filter(self, path_seg_property_name, no_trigrams_error_text):
        """Return an ES regex filter that matches this filter's glob against the
        path segment at path_seg_property_name.

        """
        glob = self._term['arg']
        try:
            return es_regex_filter(
                regex_grammar.parse(glob_to_regex(glob)),
                path_seg_property_name,
                is_case_sensitive=self._term['case_sensitive'])
        except NoTrigrams:
            raise BadTerm(no_trigrams_error_text)
コード例 #9
0
ファイル: core.py プロジェクト: modulexcite/dxr
def _path_trigram_filter(path, is_case_sensitive):
    """Return an ES filter clause that returns docs whose paths match the
    given path all the way to their ends.

    If a given path starts with a /, the user is explicitly requesting a match
    starting at the root level.

    """
    if path.startswith('/'):
        path = path[1:]  # Leading slashes aren't stored in the index.
        regex = '^{0}$'  # Insist it start at the beginning.
    else:
        regex = '(/|^){0}$'  # Start at any path segment.

    return es_regex_filter(regex_grammar.parse(regex.format(re.escape(path))),
                           'path', is_case_sensitive)
コード例 #10
0
ファイル: core.py プロジェクト: nbstar/dxr
 def filter(self):
     try:
         return es_regex_filter(self._parsed_regex, "content", is_case_sensitive=self._term["case_sensitive"])
     except NoTrigrams:
         raise BadTerm("Regexes need at least 3 literal characters in a  " "row for speed.")