Implementation

This commit is contained in:
Jamie Hardt
2021-06-01 21:55:36 -07:00
parent f5acfd2362
commit ade1cc463a
6 changed files with 31 additions and 40 deletions

View File

@@ -1,4 +1,5 @@
from .doc_entity import SessionDescriptor, TrackDescriptor, TrackClipDescriptor
from .tag_compiler import Event
from typing import Optional, Generator
# field_map maps tags in the text export to fields in FMPXMLRESULT
@@ -72,7 +73,7 @@ class ADRLine:
adlib: bool
optional: bool
adr_tag_to_line_map = (
adr_tag_to_line_map = [
TagMapping(source='Title', target="title", alt=TagMapping.ContentSource.Session),
TagMapping(source="Supv", target="supervisor"),
TagMapping(source="Client", target="client"),
@@ -104,18 +105,12 @@ class ADRLine:
formatter=(lambda x: len(x) > 0)),
TagMapping(source="OPT", target="optional",
formatter=(lambda x: len(x) > 0))
)
]
@staticmethod
def from_clip(clip: TrackClipDescriptor,
track: TrackDescriptor,
session: SessionDescriptor) -> Optional['ADRLine']:
pass
@classmethod
def from_event(cls, event: Event) -> Optional['ADRLine']:
new = cls()
TagMapping.apply_rules(cls.adr_tag_to_line_map, event.tags,
event.clip_name, event.track_name, event.session_name, new)
return new
@staticmethod
def generate_lines(session: SessionDescriptor) -> Generator['ADRLine']:
for track in session.tracks:
for track_clip in track.clips:
line = ADRLine.from_clip(track_clip, track, session)
if line is not None:
yield line

View File

@@ -4,10 +4,13 @@ from typing import Iterator, Tuple
from ptulsconv.docparser import apply_appends
from ptulsconv.docparser.doc_entity import SessionDescriptor
from ptulsconv.docparser.tag_mapping import Event
from ptulsconv.docparser.tagged_string_parser_visitor import parse_tags, TagPreModes
class Event(namedtuple('Event', 'clip_name track_name session_name tags start finish')):
pass
class TagCompiler:
session: SessionDescriptor
@@ -116,4 +119,5 @@ class TagCompiler:
marker_tags=marker_tags,
session_tags=session_parsed.tag_dict)
yield event.clip_content, event.track_content, session_parsed.content, tags, event.start, event.finish
yield event.clip_content, event.track_content, session_parsed.content, tags, event.start, event.finish

View File

@@ -1,10 +1,5 @@
from enum import Enum
from typing import Optional, Callable, Any, List
from collections import namedtuple
class Event(namedtuple('Event', 'clip_name track_name session_name tags start finish')):
pass
class TagMapping:

View File

@@ -36,7 +36,7 @@ def parse_tags(prompt) -> "TaggedStringResult":
class TaggedStringResult:
content: Optional[str]
tag_dict: Optional[Dict[str, str]]
mode: str
mode: TagPreModes
def __init__(self, content, tag_dict, mode):
self.content = content
@@ -52,7 +52,7 @@ class TagListVisitor(NodeVisitor):
return TaggedStringResult(content=next(iter(line_opt), None),
tag_dict=next(iter(tag_list_opt), None),
mode=next(iter(modifier_opt), 'Normal')
mode=TagPreModes(next(iter(modifier_opt), 'Normal'))
)
@staticmethod