示例#1
0
文件: aliasconv.py 项目: NovelLab/sms
    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),
        )
示例#2
0
    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,
            ))
示例#3
0
    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)
示例#4
0
    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
示例#5
0
    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), ))
示例#6
0
    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
示例#7
0
    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,
            ))
示例#8
0
    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)))