コード例 #1
0
 def test_missing(self):
     for template in [r'\1', r'\g<x>']:
         with self.subTest(template=template):
             with self.assertRaises(KeyError):
                 formatting.RegexTemplate(r'\1').substitute_match(
                     parsed_file.ParsedFile('', path='path', pragmas=()),
                     match.SpanMatch('', (0, 0)), {})
コード例 #2
0
 def test_string_match(self):
     self.assertEqual(
         formatting.rewrite_templates(
             parsed_file.ParsedFile('abc', path='path', pragmas=()),
             collections.OrderedDict([
                 ('foo', match.SpanMatch('abc', (0, 3))),
                 ('bar', match.StringMatch('xyz'))
             ]), {'foo': formatting.ShTemplate(r'$bar')}), {'foo': 'xyz'})
コード例 #3
0
 def test_named_template(self):
     self.assertEqual(
         formatting.rewrite_templates(
             parsed_file.ParsedFile('abc', path='path', pragmas=()),
             collections.OrderedDict([('foo', match.SpanMatch('b',
                                                              (1, 2)))]),
             {'foo': formatting.RegexTemplate(r'x\g<foo>x')}),
         {'foo': 'xbx'})
コード例 #4
0
 def test_missing_template(self):
     self.assertEqual(
         formatting.rewrite_templates(
             parsed_file.ParsedFile('abc', path='path', pragmas=()),
             collections.OrderedDict([('foo', match.SpanMatch('',
                                                              (-1, -1))),
                                      ('bar', match.SpanMatch('a',
                                                              (0, 1)))]),
             {
                 # swap foo and bar
                 'foo': formatting.RegexTemplate(r'bar=\g<bar>'),
                 'bar': formatting.RegexTemplate(r'foo=\g<foo>'),
             }),
         # foo is never matched, bar is replaced with foo=<non-match>,
         # which is treated as ''.
         {'bar': 'foo='})
コード例 #5
0
 def test_empty(self):
     self.assertEqual(
         formatting.rewrite_templates(
             parsed_file.ParsedFile('abc', path='path', pragmas=()), {},
             {}), {})
コード例 #6
0
 def test_present_named(self):
     self.assertEqual(
         formatting.RegexTemplate(r'\g<x>').substitute_match(
             parsed_file.ParsedFile('a', path='path', pragmas=()),
             match.SpanMatch('', (0, 0)),
             {'x': match.SpanMatch('a', (0, 1))}), 'a')
コード例 #7
0
 def test_extra(self):
     self.assertEqual(
         formatting.RegexTemplate('').substitute_match(
             parsed_file.ParsedFile('b', path='path', pragmas=()),
             match.SpanMatch('', (0, 0)),
             {'a': match.SpanMatch('b', (0, 1))}), '')
コード例 #8
0
 def parse(self, data: Text, path: str):
     """Parses the data into a representation usable by the searcher."""
     return parsed_file.ParsedFile(text=data, path=path, pragmas=())