mirror of
https://github.com/iluvcapra/ptulsconv.git
synced 2025-12-31 08:50:48 +00:00
Directive implementation
This commit is contained in:
@@ -61,10 +61,11 @@ class TagCompiler:
|
|||||||
|
|
||||||
def compile_events(self) -> Iterator[Event]:
|
def compile_events(self) -> Iterator[Event]:
|
||||||
step0 = self.parse_data()
|
step0 = self.parse_data()
|
||||||
step1 = self.apply_appends(step0)
|
step1 = self.filter_out_directives(step0)
|
||||||
step2 = self.collect_time_spans(step1)
|
step2 = self.apply_appends(step1)
|
||||||
step3 = self.apply_tags(step2)
|
step3 = self.collect_time_spans(step2)
|
||||||
for datum in step3:
|
step4 = self.apply_tags(step3)
|
||||||
|
for datum in step4:
|
||||||
yield Event(clip_name=datum[0], track_name=datum[1], session_name=datum[2],
|
yield Event(clip_name=datum[0], track_name=datum[1], session_name=datum[2],
|
||||||
tags=datum[3], start=datum[4], finish=datum[5])
|
tags=datum[3], start=datum[4], finish=datum[5])
|
||||||
|
|
||||||
@@ -77,6 +78,14 @@ class TagCompiler:
|
|||||||
|
|
||||||
return retval
|
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
|
@staticmethod
|
||||||
def _coalesce_tags(clip_tags: dict, track_tags: dict,
|
def _coalesce_tags(clip_tags: dict, track_tags: dict,
|
||||||
track_comment_tags: dict,
|
track_comment_tags: dict,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
from parsimonious import NodeVisitor, Grammar
|
from parsimonious import NodeVisitor, Grammar
|
||||||
from typing import Dict, Optional
|
from typing import Dict, Union
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
|
|
||||||
|
|
||||||
@@ -7,6 +7,7 @@ class TagPreModes(Enum):
|
|||||||
NORMAL = 'Normal'
|
NORMAL = 'Normal'
|
||||||
APPEND = 'Append'
|
APPEND = 'Append'
|
||||||
TIMESPAN = 'Timespan'
|
TIMESPAN = 'Timespan'
|
||||||
|
DIRECTIVE = 'Directive'
|
||||||
|
|
||||||
|
|
||||||
tag_grammar = Grammar(
|
tag_grammar = Grammar(
|
||||||
@@ -65,6 +66,8 @@ class TagListVisitor(NodeVisitor):
|
|||||||
return TagPreModes.TIMESPAN
|
return TagPreModes.TIMESPAN
|
||||||
elif node.text.startswith('&'):
|
elif node.text.startswith('&'):
|
||||||
return TagPreModes.APPEND
|
return TagPreModes.APPEND
|
||||||
|
elif node.text.startswith('!'):
|
||||||
|
return TagPreModes.DIRECTIVE
|
||||||
else:
|
else:
|
||||||
return TagPreModes.NORMAL
|
return TagPreModes.NORMAL
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user