Directive implementation

This commit is contained in:
Jamie Hardt
2022-11-18 18:33:51 -08:00
parent 28cf7b5d09
commit 2c78d4a09d
2 changed files with 19 additions and 7 deletions

View File

@@ -61,10 +61,11 @@ class TagCompiler:
def compile_events(self) -> Iterator[Event]:
step0 = self.parse_data()
step1 = self.apply_appends(step0)
step2 = self.collect_time_spans(step1)
step3 = self.apply_tags(step2)
for datum in step3:
step1 = self.filter_out_directives(step0)
step2 = self.apply_appends(step1)
step3 = self.collect_time_spans(step2)
step4 = self.apply_tags(step3)
for datum in step4:
yield Event(clip_name=datum[0], track_name=datum[1], session_name=datum[2],
tags=datum[3], start=datum[4], finish=datum[5])
@@ -77,6 +78,14 @@ class TagCompiler:
return retval
def filter_out_directives(self, clips : Iterator[Intermediate]) -> Iterator[Intermediate]:
for clip in clips:
if clip.clip_tag_mode == 'Directive':
continue
else:
yield clip
@staticmethod
def _coalesce_tags(clip_tags: dict, track_tags: dict,
track_comment_tags: dict,

View File

@@ -1,5 +1,5 @@
from parsimonious import NodeVisitor, Grammar
from typing import Dict, Optional
from typing import Dict, Union
from enum import Enum
@@ -7,6 +7,7 @@ class TagPreModes(Enum):
NORMAL = 'Normal'
APPEND = 'Append'
TIMESPAN = 'Timespan'
DIRECTIVE = 'Directive'
tag_grammar = Grammar(
@@ -65,6 +66,8 @@ class TagListVisitor(NodeVisitor):
return TagPreModes.TIMESPAN
elif node.text.startswith('&'):
return TagPreModes.APPEND
elif node.text.startswith('!'):
return TagPreModes.DIRECTIVE
else:
return TagPreModes.NORMAL