def test_iter_subevents(self): events = iter([(STARTEVENT, 'a'), (ENDEVENT, 'a')]) events.next() subevents = iter_subevents(events) self.assertEquals([(ENDEVENT, 'a')], list(subevents)) events = iter([(STARTEVENT, 'a'), (STARTEVENT, 'b'), (None, 'c'), (ENDEVENT, 'b'), (ENDEVENT, 'a')]) events.next() subevents = iter_subevents(events) self.assertEquals([(STARTEVENT, 'b'), (None, 'c'), (ENDEVENT, 'b'), (ENDEVENT, 'a')], list(subevents)) events = iter([(STARTEVENT, 'a'), (None, 'c'), (ENDEVENT, 'a'), (STARTEVENT, 'b'), (None, 'd'), (ENDEVENT, 'b')]) events.next() subevents = iter_subevents(events) self.assertEquals([(None, 'c'), (ENDEVENT, 'a')], list(subevents)) self.assertEquals([(STARTEVENT, 'b'), (None, 'd'), (ENDEVENT, 'b')], list(events))
def test_iter_subevents(self): from hwp5.treeop import STARTEVENT, ENDEVENT from hwp5.treeop import iter_subevents events = iter([(STARTEVENT, 'a'), (ENDEVENT, 'a')]) events.next() subevents = iter_subevents(events) self.assertEquals([(ENDEVENT, 'a')], list(subevents)) events = iter([(STARTEVENT, 'a'), (STARTEVENT, 'b'), (None, 'c'), (ENDEVENT, 'b'), (ENDEVENT, 'a')]) events.next() subevents = iter_subevents(events) self.assertEquals([(STARTEVENT, 'b'), (None, 'c'), (ENDEVENT, 'b'), (ENDEVENT, 'a')], list(subevents)) events = iter([(STARTEVENT, 'a'), (None, 'c'), (ENDEVENT, 'a'), (STARTEVENT, 'b'), (None, 'd'), (ENDEVENT, 'b')]) events.next() subevents = iter_subevents(events) self.assertEquals([(None, 'c'), (ENDEVENT, 'a')], list(subevents)) self.assertEquals([(STARTEVENT, 'b'), (None, 'd'), (ENDEVENT, 'b')], list(events))
def test_iter_subevents(self): events = iter([(STARTEVENT, 'a'), (ENDEVENT, 'a')]) next(events) subevents = iter_subevents(events) self.assertEqual([(ENDEVENT, 'a')], list(subevents)) events = iter([(STARTEVENT, 'a'), (STARTEVENT, 'b'), (None, 'c'), (ENDEVENT, 'b'), (ENDEVENT, 'a')]) next(events) subevents = iter_subevents(events) self.assertEqual([(STARTEVENT, 'b'), (None, 'c'), (ENDEVENT, 'b'), (ENDEVENT, 'a')], list(subevents)) events = iter([(STARTEVENT, 'a'), (None, 'c'), (ENDEVENT, 'a'), (STARTEVENT, 'b'), (None, 'd'), (ENDEVENT, 'b')]) next(events) subevents = iter_subevents(events) self.assertEqual([(None, 'c'), (ENDEVENT, 'a')], list(subevents)) self.assertEqual([(STARTEVENT, 'b'), (None, 'd'), (ENDEVENT, 'b')], list(events))
def filter_with_version(events, version): from hwp5.treeop import STARTEVENT from hwp5.treeop import iter_subevents for ev, item in events: required_version = item.get('version') if required_version is not None and version < required_version: # just consume and skip this tree logger.debug('skip following: (required version: %s)', required_version) logger.debug(' %s', (ev, item)) if ev is STARTEVENT: for x in iter_subevents(events): pass continue yield ev, item