Added line numbers to statement parser

This commit is contained in:
Jamie Hardt
2018-12-05 16:36:46 -08:00
parent f358704139
commit 7e13978d9a
2 changed files with 30 additions and 29 deletions

View File

@@ -2,7 +2,7 @@ class CmxEvent:
def __init__(self,title,number,clip_name,source_name,channels, def __init__(self,title,number,clip_name,source_name,channels,
transition,source_start,source_finish, transition,source_start,source_finish,
record_start, record_finish, fcm_drop, remarks = [] , record_start, record_finish, fcm_drop, remarks = [] ,
unrecognized = []): unrecognized = [], line_number = None):
self.title = title self.title = title
self.number = number self.number = number
self.clip_name = clip_name self.clip_name = clip_name
@@ -18,6 +18,7 @@ class CmxEvent:
self.unrecgonized = unrecognized self.unrecgonized = unrecognized
self.black = (source_name == 'BL') self.black = (source_name == 'BL')
self.aux_source = (source_name == 'AX') self.aux_source = (source_name == 'AX')
self.line_number = line_number
def can_accept(self): def can_accept(self):

View File

@@ -13,13 +13,13 @@ from itertools import count
StmtTitle = namedtuple("Title",["title","line_number"]) StmtTitle = namedtuple("Title",["title","line_number"])
StmtFCM = namedtuple("FCM",["drop","line_number"]) StmtFCM = namedtuple("FCM",["drop","line_number"])
StmtEvent = namedtuple("Event",["event","source","channels","trans","trans_op","source_in","source_out","record_in","record_out","line_number"]) StmtEvent = namedtuple("Event",["event","source","channels","trans","trans_op","source_in","source_out","record_in","record_out","line_number"])
StmtAudioExt = namedtuple("AudioExt",["audio3","audio4"]) StmtAudioExt = namedtuple("AudioExt",["audio3","audio4","line_number"])
StmtClipName = namedtuple("ClipName",["name"]) StmtClipName = namedtuple("ClipName",["name","line_number"])
StmtSourceFile = namedtuple("SourceFile",["filename"]) StmtSourceFile = namedtuple("SourceFile",["filename","line_number"])
StmtRemark = namedtuple("Remark",["text"]) StmtRemark = namedtuple("Remark",["text","line_number"])
StmtEffectsName = namedtuple("EffectsName",["name"]) StmtEffectsName = namedtuple("EffectsName",["name","line_number"])
StmtTrailer = namedtuple("Trailer",["text"]) StmtTrailer = namedtuple("Trailer",["text","line_number"])
StmtUnrecognized = namedtuple("Unrecognized",["content"]) StmtUnrecognized = namedtuple("Unrecognized",["content","line_number"])
def parse_cmx3600_statements(path): def parse_cmx3600_statements(path):
@@ -56,15 +56,15 @@ def parse_cmx3600_line(line, line_number):
elif short_event_num_p.match(line) != None: elif short_event_num_p.match(line) != None:
return parse_standard_form(line, line_number) return parse_standard_form(line, line_number)
elif line.startswith("AUD"): elif line.startswith("AUD"):
return parse_extended_audio_channels(line) return parse_extended_audio_channels(line,line_number)
elif line.startswith("*"): elif line.startswith("*"):
return parse_remark( line[1:].strip()) return parse_remark( line[1:].strip(), line_number)
elif line.startswith(">>>"): elif line.startswith(">>>"):
return parse_trailer_statement(line) return parse_trailer_statement(line, line_number)
elif line.startswith("EFFECTS NAME IS"): elif line.startswith("EFFECTS NAME IS"):
return parse_effects_name(line) return parse_effects_name(line, line_number)
else: else:
return parse_unrecognized(line) return parse_unrecognized(line, line_number)
def parse_title(line, line_num): def parse_title(line, line_num):
@@ -84,37 +84,37 @@ def parse_long_standard_form(line,source_field_length, line_number):
def parse_standard_form(line, line_number): def parse_standard_form(line, line_number):
return parse_columns_for_standard_form(line, 3, 8, line_number) return parse_columns_for_standard_form(line, 3, 8, line_number)
def parse_extended_audio_channels(line): def parse_extended_audio_channels(line, line_number):
content = line.strip() content = line.strip()
if content == "AUD 3": if content == "AUD 3":
return StmtAudioExt(audio3=True, audio4=False) return StmtAudioExt(audio3=True, audio4=False, line_number=line_number)
elif content == "AUD 4": elif content == "AUD 4":
return StmtAudioExt(audio3=False, audio4=True) return StmtAudioExt(audio3=False, audio4=True, line_number=line_number)
elif content == "AUD 3 4": elif content == "AUD 3 4":
return StmtAudioExt(audio3=True, audio4=True) return StmtAudioExt(audio3=True, audio4=True, line_number=line_number)
else: else:
return StmtUnrecognized(content=line) return StmtUnrecognized(content=line, line_number=line_number)
def parse_remark(line): def parse_remark(line, line_number):
if line.startswith("FROM CLIP NAME:"): if line.startswith("FROM CLIP NAME:"):
return StmtClipName(name=line[15:].strip() ) return StmtClipName(name=line[15:].strip() , line_number=line_number)
elif line.startswith("SOURCE FILE:"): elif line.startswith("SOURCE FILE:"):
return StmtSourceFile(filename=line[12:].strip() ) return StmtSourceFile(filename=line[12:].strip() , line_number=line_number)
else: else:
return StmtRemark(text=line) return StmtRemark(text=line, line_number=line_number)
def parse_effects_name(line): def parse_effects_name(line, line_number):
name = line[16:].strip() name = line[16:].strip()
return StmtEffectsName(name=name) return StmtEffectsName(name=name, line_number=line_number)
def parse_unrecognized(line): def parse_unrecognized(line, line_number):
return StmtUnrecognized(content=line) return StmtUnrecognized(content=line, line_number=line_number)
def parse_columns_for_standard_form(line, event_field_length, source_field_length, line_number): def parse_columns_for_standard_form(line, event_field_length, source_field_length, line_number):
col_widths = edl_column_widths(event_field_length, source_field_length) col_widths = edl_column_widths(event_field_length, source_field_length)
if sum(col_widths) > len(line): if sum(col_widths) > len(line):
return StmtUnrecognized(content=line) return StmtUnrecognized(content=line, line_number=line_number)
column_strings = collimate(line,col_widths) column_strings = collimate(line,col_widths)
@@ -130,7 +130,7 @@ def parse_columns_for_standard_form(line, event_field_length, source_field_lengt
line_number=line_number) line_number=line_number)
def parse_trailer_statement(line): def parse_trailer_statement(line, line_number):
trimmed = line[3:].strip() trimmed = line[3:].strip()
return StmtTrailer(trimmed) return StmtTrailer(trimmed, line_number=line_number)