diff --git a/pycmx/edit_list.py b/pycmx/edit_list.py index 83340cb..2c4dacb 100644 --- a/pycmx/edit_list.py +++ b/pycmx/edit_list.py @@ -15,7 +15,7 @@ class EditList: :func:`~pycmx.parse_cmx3600()`. """ - def __init__(self, statements): + def __init__(self, statements: list): self.title_statement: StmtTitle = statements[0] self.event_statements = statements[1:] @@ -78,9 +78,11 @@ class EditList: @property def events(self) -> Generator[Event, None, None]: 'A generator for all the events in the edit list' + # breakpoint() current_event_num = None event_statements = [] for stmt in self.event_statements: + breakpoint() if type(stmt) is StmtEvent: if current_event_num is None: current_event_num = stmt.event diff --git a/pycmx/parse_cmx_statements.py b/pycmx/parse_cmx_statements.py index ff09542..55a9cc5 100644 --- a/pycmx/parse_cmx_statements.py +++ b/pycmx/parse_cmx_statements.py @@ -54,7 +54,12 @@ def _parse_cmx3600_line(line: str, line_number: int) -> object: return _parse_fcm(line, line_number) if line_matcher is not None: event_field_len = len(line_matcher.group(1)) - source_field_len = len(line) - (event_field_len + 65) + source_in_match = re.search(r'\d\d\:\d\d\:\d\d\:\d\d', line) + if not source_in_match: + return _parse_unrecognized(line, line_number) + + source_field_len = source_in_match.start() - (event_field_len + 18) + # breakpoint() return _parse_columns_for_standard_form(line, event_field_len, source_field_len, line_number) if line.startswith("AUD"): @@ -193,6 +198,7 @@ def _parse_unrecognized(line, line_number): def _parse_columns_for_standard_form(line: str, event_field_length: int, source_field_length: int, line_number: int): + # breakpoint() col_widths = _edl_column_widths(event_field_length, source_field_length) if sum(col_widths) > len(line): diff --git a/tests/__init__.py b/tests/__init__.py index 5f90f9c..249d1d4 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1 +1,2 @@ from . import test_parse +from . import test_issue_19 diff --git a/tests/test_issue_19.py b/tests/test_issue_19.py new file mode 100644 index 0000000..7eca0e8 --- /dev/null +++ b/tests/test_issue_19.py @@ -0,0 +1,19 @@ +from unittest import TestCase + +from pycmx import parse_cmx3600 + +class Issue19Test(TestCase): + def setUp(self): + self.f = open("tests/edls/ISSUE_19_unusual01.edl") + + + def test_parse(self): + edl = parse_cmx3600(self.f) + for event in edl.events: + self.assertIsNotNone(event.edits) + if event.number == 1: + self.assertEqual(len(event.edits), 1) + + + def tearDown(self): + self.f.close()