Exemplo n.º 1
0
 def simple_test(self):
     p = Projection([
         ProjectionItem('foo', Dot('foo')),
         ProjectionItem('blam', Dot('blam'))
     ])
     data = {'foo': 'bar', 'baz': 3, 'blam': 30}
     self.assertDictEqual(p._apply_item(data), {'foo': 'bar', 'blam': 30})
Exemplo n.º 2
0
 def test_simple(self):
     self.assertListEqual(
         Comprehension(Dot('foo'))._apply_item([{
             'foo': 3
         }, {
             'foo': 4,
             'bar': 'baz'
         }]), [3, 4])
Exemplo n.º 3
0
 def test_other_dot_repr(self):
     self.assertEqual(repr(Projection([ProjectionItem('foo', Dot('bar'))])),
                      '{foo: .bar}')
Exemplo n.º 4
0
 def test_simple_repr(self):
     p = Projection([
         ProjectionItem('foo', Dot('foo')),
         ProjectionItem('blam', Dot('blam'))
     ])
     self.assertEqual(repr(p), '{foo, blam}')
Exemplo n.º 5
0
 def test_simple(self):
     dot = Dot('foo')
     self.assertEqual(dot._apply_item(self.data), 'bar')
Exemplo n.º 6
0
 def test_not_an_object(self):
     dot = Dot('bah')
     with self.assertRaises(MatchError) as cm:
         dot._apply_item([1,2,3])
     self.assertEqual(cm.exception.error, 'tried to access field .bah on a non-object')
Exemplo n.º 7
0
 def test_no_such_key(self):
     dot = Dot('gah')
     self.assertIsNone(dot._apply_item({'bar': 3}))
Exemplo n.º 8
0
 def test_not_an_object_empty_dot(self):
     l = [1]
     self.assertListEqual(Dot().apply(l), l)
Exemplo n.º 9
0
 def test_simple(self):
     dot = Dot('foo')
     self.assertEqual(dot._apply_item(self.data), 'bar')
Exemplo n.º 10
0
 def test_no_such_key(self):
     dot = Dot('gah')
     self.assertIsNone(dot._apply_item({'bar': 3}))
Exemplo n.º 11
0
 def test_not_an_object(self):
     dot = Dot('bah')
     with self.assertRaises(MatchError) as cm:
         dot._apply_item([1, 2, 3])
     self.assertEqual(cm.exception.error,
                      'tried to access field .bah on a non-object')
Exemplo n.º 12
0
 def test_empty_key(self):
     self.assertEqual(Dot('')._apply_item(self.data), self.data)
     self.assertEqual(Dot()._apply_item(self.data), self.data)
Exemplo n.º 13
0
 def test_repr(self):
     self.assertEqual(repr(Dot('foo')), '.foo')
Exemplo n.º 14
0
def wtf(ts):
    import pdb
    pdb.set_trace()


key = lambda: Word(alphanums + '_')

# Literal values
literals = oneOf('true false null') | ('"' + Word(alphanums) + '"') | (
    Word(nums + '- .')).setName('literal')
literals.setParseAction(lambda ts: Constant(yaml.load(ts[0])))

# Operations
operation = Forward()

emptyDot = Literal('.').setParseAction(lambda ts: Dot())
dot = (('.' + key()).setName('dot_str') |
       ('.["' + key() + '"]').setName('dot_subscript_str') |
       ('."' + key() +
        '"').setName('dot_quote_str')).setParseAction(lambda ts: Dot(ts[1]))

extract = (
    Literal('.[]').setParseAction(Extract).setName('extract') |
    (dot + '[]').setParseAction(lambda ts: Sequence([ts[0], Extract()])))

subscript = ('[' + delimitedList(Word(nums)) + ']')\
    .setParseAction(lambda ts: Subscript(map(int, ts[1:-1])))\
    .setName('subscript')

subsequence = ('[' + Optional(Word(nums + '-'), None) + ':' + Optional(Word(nums + '-'), None) + ']')\
    .setParseAction(lambda ts: Subsequence(ts[1], ts[3]))\
Exemplo n.º 15
0
 def test_dots_repr(self):
     sequence = Sequence([Dot('foo'), Dot('bar')])
     self.assertEqual(repr(sequence), '.foo.bar')
Exemplo n.º 16
0
 def test_message(self):
     data = {'bar': ['baz']}
     exc = MatchError(Dot('foo'), data, 'error message')
     self.assertEqual(
         'Failed to apply ".foo": error message. The data being processed was:\n%s'
         % yaml.dump(data), exc.message)
Exemplo n.º 17
0
 def test_dots(self):
     data = {'a': {'b': 'c'}}
     dot_a = Dot('a')
     dot_b = Dot('b')
     sequence = Sequence([dot_a, dot_b])
     self.assertEqual(sequence.apply([data]), ['c'])
Exemplo n.º 18
0
 def test_repr(self):
     self.assertEqual(repr(Comprehension(Dot('bar'))), '[.bar]')