def apply_alias_to_action(record: Action, alias: dict) -> Action: assert isinstance(record, Action) assert isinstance(alias, dict) descs = [translate_tags_str(desc, alias) for desc in record.descs] return Action( record.type, alias[record.subject] if record.subject in alias else record.subject, translate_tags_str(record.outline, alias), descs, translate_tags_str(record.note, alias), )
def _conv_spin(record: ScriptRecord, tags: dict) -> ScriptRecord: assert isinstance(record, ScriptRecord) assert isinstance(tags, dict) info = assertion.is_instance(record.note, SpinInfo) return ScriptRecord( record.type, record.subject, record.descs, SpinInfo( translate_tags_str(info.subject, tags, True, None), translate_tags_str(info.stage, tags, True, None), translate_tags_str(info.year, tags, True, None), translate_tags_str(info.date, tags, True, None), translate_tags_str(info.time, tags, True, None), info.clock, ))
def _conv_person(record: InfoRecord, callings: dict, tags: dict) -> InfoRecord: assert isinstance(record, InfoRecord) assert isinstance(callings, dict) assert isinstance(tags, dict) info = assertion.is_instance(record.note, PersonInfo) subject = record.subject outline = record.outline if record.subject in callings: calling = callings[record.subject] outline = translate_tags_str(outline, calling) return InfoRecord(record.type, record.level, record.index, translate_tags_str(subject, tags, True, None), translate_tags_str(outline, tags), info)
def _conv_act(record: StructRecord, tags: dict, callings: dict) -> StructRecord: assert isinstance(record, StructRecord) assert isinstance(tags, dict) assert isinstance(callings, dict) if record.subject in callings: calling = dict_sorted(callings[record.subject], True) return StructRecord(record.type, record.act, calling['S'], translate_tags_str(record.outline, calling), record.note) elif record.subject in tags: return StructRecord( record.type, record.act, translate_tags_str(record.subject, tags, True, None), record.outline, record.note) else: return record
def _conv_item(record: InfoRecord, callings: dict, tags: dict) -> InfoRecord: assert isinstance(record, InfoRecord) assert isinstance(callings, dict) assert isinstance(tags, dict) info = assertion.is_instance(record.note, ItemInfo) subject = record.subject outline = record.outline have = info.have if record.subject in callings: calling = callings[record.subject] outline = translate_tags_str(outline, calling) have = translate_tags_str(have, calling) return InfoRecord(record.type, record.level, record.index, translate_tags_str(subject, tags), translate_tags_str(outline, tags), ItemInfo(translate_tags_str(have, tags), ))
def _conv_desc(record: ScriptRecord, callings: dict) -> ScriptRecord: assert isinstance(record, ScriptRecord) assert isinstance(callings, dict) if record.subject in callings: calling = dict_sorted(callings[record.subject], True) return ScriptRecord( record.type, calling['S'], [translate_tags_str(d, calling) for d in record.descs], record.note) else: return record
def _conv_transition(record: InfoRecord, tags: dict) -> InfoRecord: assert isinstance(record, InfoRecord) assert isinstance(tags, dict) info = assertion.is_instance(record.note, TransitionInfo) return InfoRecord( record.type, record.level, record.index, record.subject, record.outline, TransitionInfo( translate_tags_str(info.title, tags), translate_tags_str(info.camera, tags, True, None), translate_tags_str(info.stage, tags, True, None), info.location, translate_tags_str(info.year, tags), translate_tags_str(info.date, tags), translate_tags_str(info.time, tags, True, None), info.clock, ))
def _conv_flag(record: InfoRecord, callings: dict, tags: dict) -> InfoRecord: assert isinstance(record, InfoRecord) assert isinstance(callings, dict) assert isinstance(tags, dict) info = assertion.is_instance(record.note, FlagInfo) subject = record.subject outline = record.outline foreshadow = info.foreshadow payoff = info.payoff if subject in callings: calling = callings[record.subject] subject = calling['S'] outline = translate_tags_str(outline, calling) foreshadow = translate_tags_str(foreshadow, calling) payoff = translate_tags_str(payoff, calling) return InfoRecord( record.type, record.level, record.index, translate_tags_str(subject, tags), translate_tags_str(outline, tags), FlagInfo(translate_tags_str(foreshadow, tags), translate_tags_str(payoff, tags)))