From 3502eaddfd4aa1800326012e594e8f72963e6971 Mon Sep 17 00:00:00 2001 From: Jamie Hardt Date: Mon, 31 May 2021 15:16:23 -0700 Subject: [PATCH] Some functional util code --- ptulsconv/docparser/doc_entity.py | 4 +++- .../docparser/tagged_string_parser_visitor.py | 17 +++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) 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):