コード例 #1
0
def run():
    data = get_bestiaries_from_web()
    data = parse_copies(data)
    data = srdfilter(data)
    data = parse_ac(data)
    rendered = monster_render(data)
    rendered = recursive_tag(rendered)
    out = parse_attacks(rendered)
    dump(out, 'bestiary.json')
    diff('bestiary.json')
コード例 #2
0
def run():
    data = get_classes_from_web()
    data = filter_ignored(data)
    data = srdfilter(data)
    data = recursive_tag(data)
    data = fix_subclass_dupes(data)
    classfeats = parse_classfeats(data)
    classfeats.extend(parse_invocations())
    dump(data, 'classes.json')
    dump(classfeats, 'classfeats.json')
    diff('classes.json')
    diff('classfeats.json')
コード例 #3
0
def prerender(data):
    for item in data:
        if 'entries' in item:
            item['desc'] = render(item['entries'])
            del item['entries']
        else:
            item['desc'] = ""

        if 'additionalEntries' in item:
            item['desc'] += f"\n\n{render(item['additionalEntries'])}"
        item['desc'] = item['desc'].strip()

        for k, v in item.items():
            item[k] = recursive_tag(v)
    return data
コード例 #4
0
def parse(data):
    processed = []
    for spell in data:
        log.info(f"Parsing {spell['name']}...")
        parsetime(spell)
        parserange(spell)
        parsecomponents(spell)
        parseduration(spell)
        parseclasses(spell)
        srdfilter(spell)

        ritual = spell.get('meta', {}).get('ritual', False)
        desc = render(spell['entries'])
        if 'entriesHigherLevel' in spell:
            higherlevels = render(spell['entriesHigherLevel']) \
                .replace("**At Higher Levels**: ", "")
        else:
            higherlevels = None

        if NEW_AUTOMATION:
            automation = get_automation(spell)
        else:
            automation = get_automation_from_old(spell)

        newspell = {
            "name": spell['name'],
            "level": spell['level'],
            "school": spell['school'],
            "casttime": spell['time'],
            "range": spell['range'],
            "components": spell['components'],
            "duration": spell['duration'],
            "description": desc,
            "classes": spell['classes'],
            "subclasses": spell['subclasses'],
            "ritual": ritual,
            "higherlevels": higherlevels,
            "source": spell['source'],
            "page": spell.get('page', '?'),
            "concentration": spell['concentration'],
            "automation": automation,
            "srd": spell['srd']
        }
        processed.append(recursive_tag(newspell))

    processed = ensure_ml_order(processed)
    return processed