Some functional util code

This commit is contained in:
Jamie Hardt
2021-05-28 16:31:57 -07:00
parent 2cc4f423cf
commit 2e08499f70
4 changed files with 53 additions and 10 deletions

View File

@@ -0,0 +1,15 @@
from typing import Generator, Callable, Iterator
def apply_appends(source: Iterator,
should_append: Callable,
do_append: Callable) -> Generator:
this_element = next(source)
for element in source:
if should_append(this_element, element):
this_element = do_append(this_element, element)
else:
yield this_element
this_element = element
yield this_element

View File

@@ -1,5 +1,8 @@
from .doc_entity import SessionDescriptor
from .tagged_string_parser_visitor import parse_tags
from .doc_entity import SessionDescriptor, TrackDescriptor, TrackClipDescriptor
from typing import Optional, Generator, List, Callable
from tagged_string_parser_visitor import parse_tags
from itertools import chain
from functools import reduce
from fractions import Fraction
# field_map maps tags in the text export to fields in FMPXMLRESULT
@@ -69,14 +72,18 @@ class ADRLine:
optional: bool
done: bool
@staticmethod
def from_clip(clip: TrackClipDescriptor,
track: TrackDescriptor,
session: SessionDescriptor) -> Optional['ADRLine']:
pass
class ADRDocument:
document: SessionDescriptor
@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
def __init__(self, session: SessionDescriptor):
self.document = session
def lines(self):
header_metadata = parse_tags(self.document.header.session_name)
#TODO continue