Beispiel #1
0
 def _validate_pattern(self):
     try:
         verify_regex(self.regex, self.line_text)
     except NotMatchingRegexError:
         return [NotMatchingPatternProblem()]
     else:
         return []
Beispiel #2
0
    def update_by_regex(self, new_regex):
        """
        Assigns self.regex to new_regex.

        Throws NotMatchingRegexError if new_regex doesn't match self.line_text
        If needed, improves new_regex: new_regex = '^' + new_regex + '$' (regex must match whole line)
        Updates self.param_groups so that they correspond to new_regex groups
        """

        if new_regex[-1] != '$':
            new_regex += '$'

        try:
            verify_regex(new_regex, self.line_text)
        except NotMatchingRegexError:
            self.param_groups = {}
            self.primary_key = []
        else:
            groups = regex_groups(new_regex, self.line_text)
            default_converter = ConverterType.TO_STRING
            self.param_groups = dict(
                (key + 1, ParamGroup(groups[key], default_converter))
                for key in six.moves.range(len(groups))
            )
        finally:
            self.regex = new_regex
Beispiel #3
0
def _groups_from_spans(spans, regex, text):
    verify_regex(regex, text)
    matcher = re.match(regex, text)
    group_contents = matcher.groups()
    sorted_spans = spans.sort_by_start_and_end()
    group_converters = [span.converter for span in sorted_spans]
    groups = [
        ParamGroup(content, converter)
        for content, converter in six.moves.zip(group_contents, group_converters)
    ]
    groups_dict = dict((key + 1, groups[key]) for key in six.moves.range(len(groups)))
    return groups_dict
Beispiel #4
0
def _groups_from_spans(spans, regex, text):
    verify_regex(regex, text)
    matcher = re.match(regex, text)
    group_contents = matcher.groups()
    sorted_spans = spans.sort_by_start_and_end()
    group_converters = [span.converter for span in sorted_spans]
    groups = [
        ParamGroup(content, converter) for content, converter in six.moves.zip(
            group_contents, group_converters)
    ]
    groups_dict = dict(
        (key + 1, groups[key]) for key in six.moves.range(len(groups)))
    return groups_dict