Implementing events

Statements separated into events
This commit is contained in:
Jamie Hardt
2018-12-24 02:02:30 -08:00
parent e4b6036ab7
commit 168fd16473
3 changed files with 55 additions and 20 deletions

View File

@@ -1,5 +1,5 @@
# pycmx init
from .parse_cmx import parse_cmx3600
from .parse_cmx_events import parse_cmx3600
__version__ = '0.6'

View File

@@ -1,8 +1,52 @@
# pycmx
# (c) 2018 Jamie Hardt
def events(statements=[]):
if statements[0].
from .parse_cmx_statements import (parse_cmx3600_statements,
StmtEvent, StmtFCM, StmtTitle)
def parse_cmx3600(path):
statements = parse_cmx3600_statements(path)
return EditList(statements)
class EditList:
def __init__(self, statements):
self.title_statement = statements[0]
self.event_statements = statements[1:]
def title(self):
'The title of the edit list'
return self.title_statement.title
def events(self):
'Each event in the edit list'
def events_p(statements_rest, curr_event_num,
statements_event, events, is_drop):
stmt = statements_rest[0]
rem = statements_rest[1:]
if type(stmt) is StmtEvent:
if stmt.event == curr_event_num:
return ( rem,curr_event_num,statements_event + [stmt],events,is_drop)
else:
new_event = Event(statements_event)
return ( rem,stmt.event, [stmt], events + [new_event],is_drop )
elif type(stmt) is StmtFCM:
return ( rem, curr_event_num, statements_event, events,stmt.drop)
else:
return ( rem, curr_event_num, statements_event + [stmt],events, is_drop)
result = events_p(self.event_statements, None, [], [], False)
while True:
if len(result[0]) == 0:
return result[3]
else:
result = events_p(*result)
class Event:
def __init__(self, statements):
@@ -10,4 +54,6 @@ class Event:
def number():
return statements[0].event

View File

@@ -11,24 +11,13 @@ class TestParse(TestCase):
"TEST.edl"
]
counts = [ 287, 250 , 376, 148 ]
counts = [ 287, 250 , 376, 120 ]
for fn, count in zip(files, counts):
events = pycmx.parse_cmx3600(f"tests/edls/{fn}" )
self.assertTrue( len(events) == count , f"expected {len(events)} but found {count}")
edl = pycmx.parse_cmx3600(f"tests/edls/{fn}" )
actual = len(edl.events())
self.assertTrue( actual == count , f"expected {count} but found {actual}")
def test_audio_channels(self):
events = pycmx.parse_cmx3600(f"tests/edls/TEST.edl" )
self.assertTrue(events[0].channels.a2)
self.assertFalse(events[0].channels.a1)
self.assertTrue(events[2].channels.get_audio_channel(7))
self.assertFalse(events[2].channels.get_audio_channel(1))
self.assertFalse(events[2].channels.get_audio_channel(2))
self.assertFalse(events[2].channels.get_audio_channel(3))
self.assertFalse(events[2].channels.get_audio_channel(4))
self.assertFalse(events[2].channels.get_audio_channel(10))
self.assertFalse(events[2].channels.get_audio_channel(11))
self.assertFalse(events[2].channels.get_audio_channel(12))
self.assertFalse(events[2].channels.get_audio_channel(13))