Some refinement

This commit is contained in:
Jamie Hardt
2021-06-01 21:04:13 -07:00
parent 2466db1401
commit 945ba6102b
2 changed files with 26 additions and 23 deletions

View File

@@ -7,17 +7,20 @@ from fractions import Fraction
from collections import namedtuple from collections import namedtuple
class Event(namedtuple('Event', 'clip_name track_name session_name tags start finish')):
pass
class TagCompiler: class TagCompiler:
session: SessionDescriptor session: SessionDescriptor
def compile_events(self) -> [Tuple[str, str, str, dict, Fraction, Fraction]]: def compile_events(self) -> Iterator[Event]:
yield from self.apply_tags( step0 = self.parse_data()
self.collect_time_spans( step1 = self.apply_appends(step0)
self.apply_appends( step2 = self.collect_time_spans(step1)
self.parse_data() step3 = self.apply_tags(step2)
) for datum in step3:
) yield Event(*datum)
)
def _marker_tags(self, at): def _marker_tags(self, at):
retval = dict() retval = dict()
@@ -58,7 +61,8 @@ class TagCompiler:
yield TagCompiler.Intermediate(track_content=track_parsed.content, yield TagCompiler.Intermediate(track_content=track_parsed.content,
track_tags=track_parsed.tag_dict, track_tags=track_parsed.tag_dict,
track_comment_tags=track_comments_parsed.tag_dict, track_comment_tags=track_comments_parsed.tag_dict,
clip_content=clip_parsed.content, clip_tags=clip_parsed.tag_dict, clip_content=clip_parsed.content,
clip_tags=clip_parsed.tag_dict,
clip_tag_mode=clip_parsed.mode, clip_tag_mode=clip_parsed.mode,
start=start, finish=finish) start=start, finish=finish)

View File

@@ -4,8 +4,8 @@ from fractions import Fraction
import pprint import pprint
class MyTestCase(unittest.TestCase): class TestTagCompiler(unittest.TestCase):
def test_something(self): def test_one_track(self):
c = tag_mapping.TagCompiler() c = tag_mapping.TagCompiler()
test_header = doc_entity.HeaderDescriptor(session_name="Test Session $Ver=1.1", test_header = doc_entity.HeaderDescriptor(session_name="Test Session $Ver=1.1",
@@ -60,31 +60,30 @@ class MyTestCase(unittest.TestCase):
events = c.compile_events() events = c.compile_events()
event1 = next(events) event1 = next(events)
self.assertEqual('This is clip 1', event1[0]) self.assertEqual('This is clip 1', event1.clip_name)
self.assertEqual('Track 1', event1[1]) self.assertEqual('Track 1', event1.track_name)
self.assertEqual('Test Session', event1[2]) self.assertEqual('Test Session', event1.session_name)
self.assertEqual(dict(A='A', self.assertEqual(dict(A='A',
Color='Blue', Color='Blue',
Ver='1.1', Ver='1.1',
Comment='This is some text in the comments'), event1[3]) Comment='This is some text in the comments'), event1.tags)
self.assertEqual(Fraction(3600, 1), event1[4]) self.assertEqual(Fraction(3600, 1), event1.start)
event2 = next(events) event2 = next(events)
self.assertEqual("This is the second clip ...and this is the last clip", event2[0]) self.assertEqual("This is the second clip ...and this is the last clip", event2.clip_name)
self.assertEqual('Track 1', event2[1]) self.assertEqual('Track 1', event2.track_name)
self.assertEqual('Test Session', event2[2]) self.assertEqual('Test Session', event2.session_name)
self.assertEqual(dict(R='Noise', A='A', B='B', self.assertEqual(dict(R='Noise', A='A', B='B',
Color='Red', Color='Red',
Comment='This is some text in the comments', Comment='This is some text in the comments',
N='1', N='1',
Ver='1.1'), event2[3]) Ver='1.1'), event2.tags)
self.assertEqual(c.session.header.convert_timecode('01:00:01:10'), event2[4]) self.assertEqual(c.session.header.convert_timecode('01:00:01:10'), event2.start)
self.assertEqual(c.session.header.convert_timecode('01:00:03:00'), event2[5]) self.assertEqual(c.session.header.convert_timecode('01:00:03:00'), event2.finish)
self.assertIsNone(next(events, None)) self.assertIsNone(next(events, None))
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()