def parse_saving_throw(spell, value, override=False): value = colon_filter(value) if value.find('Throw ') == 0: value = value.replace('Throw ', '') if spell.has_key('saving_throw') and override: spell['saving_throw'] = value elif not spell.has_key('saving_throw'): spell['saving_throw'] = value
def parse_saving_throw(spell, value, override=False): value = colon_filter(value) if value.find('Throw ') == 0: value = value.replace('Throw ', '') if spell.has_key('saving_throw') and override: spell['saving_throw'] = value elif not spell.has_key('saving_throw'): spell['saving_throw'] = value
def parse_school(spell, value): value = value.replace(';', '') value = colon_filter(value) m = re.search('\((.*)\)', value) if m: spell['subschool'] = m.group(1) value= re.sub('\(.*\)', '', value) m = re.search('\[(.*)\]', value) if m: descriptor = m.group(1) spell['descriptor'] = descriptor.split(', ') value = re.sub('\[.*\]', '', value) spell['school'] = value.strip()
def parse_school(spell, value): value = value.replace(';', '') value = colon_filter(value) m = re.search('\((.*)\)', value) if m: spell['subschool'] = m.group(1) value = re.sub('\(.*\)', '', value) m = re.search('\[(.*)\]', value) if m: descriptor = m.group(1) spell['descriptor'] = descriptor.split(', ') value = re.sub('\[.*\]', '', value) spell['school'] = value.strip()
def parse_components(spell, value): value = colon_filter(value) m = re.search('\(.*?[^\)],.*?\)', value) while m: value = re.sub(r"\((.*?)[^\)],(.*?)\)", r"(\1|\2)", value) m = re.search('\(.*?[^\)],.*?\)', value) comps = value.split(', ') finalcomps = [] for comp in comps: if comp.find('(') > -1: m = re.search('(.*) \((.*)\)', comp) name = m.group(1) comments = m.group(2) comments = comments.replace('|', ',') finalcomps.append({'type': name, 'text': comments}) else: finalcomps.append({'type': comp}) spell['components'] = finalcomps
def parse_level(spell, value): value = colon_filter(value) if value.find(";"): value = value.replace(";", ",") levels = value.split(', ') finallevels = [] for level in levels: m = re.search('(.*) (\d*)', level) c = m.group(1) l = int(m.group(2)) if c.lower().strip() == 'sorcerer/wizard': finallevels.append({'class': 'sorcerer', 'level': l}) finallevels.append({'class': 'wizard', 'level': l}) elif c.lower().strip() == 'cleric': finallevels.append({'class': 'cleric', 'level': l}) finallevels.append({'class': 'oracle', 'level': l}) else: finallevels.append({'class': c, 'level': l}) spell['level'] = finallevels
def parse_level(spell, value): value = colon_filter(value) if value.find(";"): value = value.replace(";", ",") levels = value.split(', ') finallevels = [] for level in levels: m = re.search('(.*) (\d*)', level) c = m.group(1) l = int(m.group(2)) if c.lower().strip() == 'sorcerer/wizard': finallevels.append({'class': 'sorcerer', 'level': l}) finallevels.append({'class': 'wizard', 'level': l}) elif c.lower().strip() == 'cleric': finallevels.append({'class': 'cleric', 'level': l}) finallevels.append({'class': 'oracle', 'level': l}) else: finallevels.append({'class': c, 'level': l}) spell['level'] = finallevels
def parse_components(spell, value): value = colon_filter(value) m = re.search ('(\(.*?\))', value) content = [] while m: value = re.sub('\(.*?\)', '{%s}' % len(content), value, count=1) content.append(m.groups()[0].replace(",", "|")) m = re.search('(\(.*?\))', value) comps = value.split(', ') finalcomps = [] for comp in comps: if comp.find('{') > -1: m = re.search('(.*) {([0-9]*)}(.*)', comp) name = m.group(1) content_index = int(m.group(2)) comments = content[content_index].replace('|', ',').replace('(', '').replace(')', '') finalcomps.append({'type': name, 'text': comments}) if m.group(3) != '': finalcomps.append({'text': m.group(3)}) else: finalcomps.append({'type': comp}) spell['components'] = finalcomps
def parse_level(spell, value): value = colon_filter(value) if value.find(";"): value = value.replace(";", ",") levels = value.split(', ') finallevels = [] hunterlevels = None for level in levels: m = re.search('(.*) (\d*)', level) c = m.group(1) l = int(m.group(2)) if c.lower().strip() == 'sorcerer/wizard': finallevels.append({'class': 'sorcerer', 'level': l}) finallevels.append({'class': 'wizard', 'level': l}) finallevels.append({'class': 'arcanist', 'level': l}) elif c.lower().strip() == 'bard': finallevels.append({'class': 'bard', 'level': l}) finallevels.append({'class': 'skald', 'level': l}) elif c.lower().strip() == 'alchemist': finallevels.append({'class': 'alchemist', 'level': l}) finallevels.append({'class': 'investigator', 'level': l}) elif c.lower().strip() == 'cleric': finallevels.append({'class': 'cleric', 'level': l}) finallevels.append({'class': 'oracle', 'level': l}) finallevels.append({'class': 'warpriest', 'level': l}) elif c.lower().strip() in ['druid', 'ranger']: finallevels.append({'class': c, 'level': l}) if l <= 6: if not hunterlevels: hunterlevels = {'class': 'hunter', 'level': l} elif hunterlevels['level'] > l: hunterlevels['level'] = l else: finallevels.append({'class': c, 'level': l}) if hunterlevels: finallevels.append(hunterlevels) spell['level'] = finallevels
def parse_components(spell, value): value = colon_filter(value) m = re.search('(\(.*?\))', value) content = [] while m: value = re.sub('\(.*?\)', '{%s}' % len(content), value, count=1) content.append(m.groups()[0].replace(",", "|")) m = re.search('(\(.*?\))', value) comps = value.split(', ') finalcomps = [] for comp in comps: if comp.find('{') > -1: m = re.search('(.*) {([0-9]*)}(.*)', comp) name = m.group(1) content_index = int(m.group(2)) comments = content[content_index].replace('|', ',').replace( '(', '').replace(')', '') finalcomps.append({'type': name, 'text': comments}) if m.group(3) != '': finalcomps.append({'text': m.group(3)}) else: finalcomps.append({'type': comp}) spell['components'] = finalcomps
def parse_school(spell, value): value = value.replace(';', '') value = colon_filter(value) m = re.search('\((.*)\)', value) if m: spell['subschool_text'] = m.group(1) spell['subschool'] = subschool_list(spell['subschool_text']) value= re.sub('\(.*\)', '', value) m = re.search('\[(.*)\]', value) if m: descriptor = m.group(1) spell['descriptor_text'] = descriptor descriptors = descriptor.split(', ') repaired_descriptors = [] for d in descriptors: if d.startswith('or '): d = d[3:] if d.endswith(' see text'): d = d[:-9] repaired_descriptors.append(d) spell['descriptor'] = repaired_descriptors value = re.sub('\[.*\]', '', value) spell['school'] = value.strip()
def fxn(sb, value): value = colon_filter(value) value = value.replace('–', '-') value = value.replace('—', '-') spells = sb.setdefault('spells', {}) spells[field] = value
def parse_casting_time(spell, value): value = colon_filter(value) if value.find('Time ') == 0: value = value.replace('Time', '') spell['casting_time'] = value
def fxn(spell, value): value = colon_filter(value) effect = spell.setdefault('effects', []) effect.append({'name': filter_name(field), 'text': value})
def parse_casting_time(spell, value): value = colon_filter(value) if value.find('Time ') == 0: value = value.replace('Time', '') spell['casting_time'] = value
def fxn(spell, value): value = colon_filter(value) effect = spell.setdefault('effects', []) effect.append({'name': filter_name(field), 'text': value})