diff --git a/ptulsconv/docparser/doc_entity.py b/ptulsconv/docparser/doc_entity.py index a63cb03..8030560 100644 --- a/ptulsconv/docparser/doc_entity.py +++ b/ptulsconv/docparser/doc_entity.py @@ -1,6 +1,8 @@ from fractions import Fraction from ptulsconv.broadcast_timecode import smpte_to_frame_count -from typing import Tuple, List +from typing import Tuple, List, Generator +from . import apply_appends +from .tagged_string_parser_visitor import parse_tags class SessionDescriptor: diff --git a/ptulsconv/docparser/tagged_string_parser_visitor.py b/ptulsconv/docparser/tagged_string_parser_visitor.py index fb95f50..1f25733 100644 --- a/ptulsconv/docparser/tagged_string_parser_visitor.py +++ b/ptulsconv/docparser/tagged_string_parser_visitor.py @@ -1,5 +1,12 @@ from parsimonious import NodeVisitor, Grammar from typing import Dict, Optional +from enum import Enum + + +class TagPreModes(Enum): + NORMAL = 'Normal' + APPEND = 'Append' + TIMESPAN = 'Timespan' tag_grammar = Grammar( @@ -16,7 +23,7 @@ tag_grammar = Grammar( tag_junk = word word_sep? word = ~"[^ \[\{\$][^ ]*" word_sep = ~" +" - modifier = ("@" / "&" / "!") word_sep? + modifier = ("@" / "&") word_sep? """ ) @@ -55,13 +62,11 @@ class TagListVisitor(NodeVisitor): @staticmethod def visit_modifier(node, _): if node.text.startswith('@'): - return 'Timespan' + return TagPreModes.TIMESPAN elif node.text.startswith('&'): - return 'Append' - elif node.text.startswith('!'): - return 'Movie' + return TagPreModes.APPEND else: - return 'Normal' + return TagPreModes.NORMAL @staticmethod def visit_tag_list(_, visited_children):