def to_mse(self, print_raw = False, vdump = False): outstr = '' # need a 'card' string first outstr += 'card:\n' cardname = titlecase(transforms.name_unpass_1_dashes(self.__dict__[field_name])) outstr += '\tname: ' + cardname + '\n' if self.__dict__[field_rarity]: if self.__dict__[field_rarity] in utils.json_rarity_unmap: rarity = utils.json_rarity_unmap[self.__dict__[field_rarity]] else: rarity = self.__dict__[field_rarity] outstr += '\trarity: ' + rarity.lower() + '\n' if not self.__dict__[field_cost].none: outstr += ('\tcasting cost: ' + self.__dict__[field_cost].format().replace('{','').replace('}','') + '\n') outstr += '\tsuper type: ' + ' '.join(self.__dict__[field_supertypes] + self.__dict__[field_types]).title() + '\n' if self.__dict__[field_subtypes]: outstr += '\tsub type: ' + ' '.join(self.__dict__[field_subtypes]).title() + '\n' if self.__dict__[field_pt]: ptstring = utils.from_unary(self.__dict__[field_pt]).split('/') if (len(ptstring) > 1): # really don't want to be accessing anything nonexistent. outstr += '\tpower: ' + ptstring[0] + '\n' outstr += '\ttoughness: ' + ptstring[1] + '\n' if self.__dict__[field_text].text: mtext = self.__dict__[field_text].text mtext = transforms.text_unpass_1_choice(mtext, delimit = False) mtext = transforms.text_unpass_2_counters(mtext) mtext = transforms.text_unpass_3_uncast(mtext) mtext = transforms.text_unpass_4_unary(mtext) mtext = transforms.text_unpass_5_symbols(mtext, False) mtext = sentencecase(mtext) # I don't really want these MSE specific passes in transforms, # but they could be pulled out separately somewhere else in here. mtext = mtext.replace(utils.this_marker, '<atom-cardname><nospellcheck>' + utils.this_marker + '</nospellcheck></atom-cardname>') mtext = transforms.text_unpass_6_cardname(mtext, cardname) mtext = transforms.text_unpass_7_newlines(mtext) mtext = transforms.text_unpass_8_unicode(mtext) newtext = Manatext('') newtext.text = mtext newtext.costs = self.__dict__[field_text].costs newtext = newtext.format() # See, the thing is, I think it's simplest and easiest to just leave it like this. # What could possibly go wrong? newtext = newtext.replace('{','<sym-auto>').replace('}','</sym-auto>') else: newtext = '' # Annoying special case for bsides; # This could be improved by having an intermediate function that returned # all of the formatted fields in a data structure and a separate wrapper # that actually packed them into the MSE format. if self.bside: newtext = newtext.replace('\n','\n\t\t') outstr += '\trule text:\n\t\t' + newtext + '\n' outstr += '\tstylesheet: new-split\n' cardname2 = titlecase(transforms.name_unpass_1_dashes( self.bside.__dict__[field_name])) outstr += '\tname 2: ' + cardname2 + '\n' if self.bside.__dict__[field_rarity]: if self.bside.__dict__[field_rarity] in utils.json_rarity_unmap: rarity2 = utils.json_rarity_unmap[self.bside.__dict__[field_rarity]] else: rarity2 = self.bside.__dict__[field_rarity] outstr += '\trarity 2: ' + rarity2.lower() + '\n' if not self.bside.__dict__[field_cost].none: outstr += ('\tcasting cost 2: ' + self.bside.__dict__[field_cost].format() .replace('{','').replace('}','') + '\n') outstr += ('\tsuper type 2: ' + ' '.join(self.bside.__dict__[field_supertypes] + self.bside.__dict__[field_types]).title() + '\n') if self.bside.__dict__[field_subtypes]: outstr += ('\tsub type 2: ' + ' '.join(self.bside.__dict__[field_subtypes]).title() + '\n') if self.bside.__dict__[field_pt]: ptstring2 = utils.from_unary(self.bside.__dict__[field_pt]).split('/') if (len(ptstring2) > 1): # really don't want to be accessing anything nonexistent. outstr += '\tpower 2: ' + ptstring2[0] + '\n' outstr += '\ttoughness 2: ' + ptstring2[1] + '\n' if self.bside.__dict__[field_text].text: mtext2 = self.bside.__dict__[field_text].text mtext2 = transforms.text_unpass_1_choice(mtext2, delimit = False) mtext2 = transforms.text_unpass_2_counters(mtext2) mtext2 = transforms.text_unpass_3_uncast(mtext2) mtext2 = transforms.text_unpass_4_unary(mtext2) mtext2 = transforms.text_unpass_5_symbols(mtext2, False) mtext2 = sentencecase(mtext2) mtext2 = mtext2.replace(utils.this_marker, '<atom-cardname><nospellcheck>' + utils.this_marker + '</nospellcheck></atom-cardname>') mtext2 = transforms.text_unpass_6_cardname(mtext2, cardname2) mtext2 = transforms.text_unpass_7_newlines(mtext2) mtext2 = transforms.text_unpass_8_unicode(mtext2) newtext2 = Manatext('') newtext2.text = mtext2 newtext2.costs = self.bside.__dict__[field_text].costs newtext2 = newtext2.format() newtext2 = newtext2.replace('{','<sym-auto>').replace('}','</sym-auto>') newtext2 = newtext2.replace('\n','\n\t\t') outstr += '\trule text 2:\n\t\t' + newtext2 + '\n' # Need to do Special Things if it's a planeswalker. # This code mostly works, but it won't get quite the right thing if the planeswalker # abilities don't come before any other ones. Should be fixed. elif "planeswalker" in str(self.__dict__[field_types]): outstr += '\tstylesheet: m15-planeswalker\n' # set up the loyalty cost fields using regex to find how many there are. i = 0 lcost_regex = r'[-+]?\d+: ' # 1+ figures, might be 0. for lcost in re.findall(lcost_regex, newtext): i += 1 outstr += '\tloyalty cost ' + str(i) + ': ' + lcost + '\n' # sub out the loyalty costs. newtext = re.sub(lcost_regex, '', newtext) # We need to uppercase again, because MSE won't magically capitalize for us # like it does after semicolons. # Abusing passes like this is terrible, should really fix sentencecase. newtext = transforms.text_pass_9_newlines(newtext) newtext = sentencecase(newtext) newtext = transforms.text_unpass_7_newlines(newtext) if self.__dict__[field_loyalty]: outstr += '\tloyalty: ' + utils.from_unary(self.__dict__[field_loyalty]) + '\n' newtext = newtext.replace('\n','\n\t\t') outstr += '\trule text:\n\t\t' + newtext + '\n' else: newtext = newtext.replace('\n','\n\t\t') outstr += '\trule text:\n\t\t' + newtext + '\n' # now append all the other useless fields that the setfile expects. outstr += '\thas styling: false\n\ttime created:2015-07-20 22:53:07\n\ttime modified:2015-07-20 22:53:08\n\textra data:\n\timage:\n\tcard code text:\n\tcopyright:\n\timage 2:\n\tcopyright 2:\n\tnotes:' return outstr
def fields_from_json(src_json): parsed = True valid = True fields = {} # we hardcode in what the things are called in the mtgjson format if 'name' in src_json: name_val = src_json['name'].lower() name_orig = name_val name_val = transforms.name_pass_1_sanitize(name_val) name_val = utils.to_ascii(name_val) fields[field_name] = [(-1, name_val)] else: name_orig = '' parsed = False # return the actual Manacost object if 'manaCost' in src_json: cost = Manacost(src_json['manaCost'], fmt = 'json') valid = valid and cost.valid parsed = parsed and cost.parsed fields[field_cost] = [(-1, cost)] if 'supertypes' in src_json: fields[field_supertypes] = [(-1, map(lambda s: utils.to_ascii(s.lower()), src_json['supertypes']))] if 'types' in src_json: fields[field_types] = [(-1, map(lambda s: utils.to_ascii(s.lower()), src_json['types']))] else: parsed = False if 'subtypes' in src_json: fields[field_subtypes] = [(-1, map(lambda s: utils.to_ascii(s.lower()), src_json['subtypes']))] if 'rarity' in src_json: if src_json['rarity'] in utils.json_rarity_map: fields[field_rarity] = [(-1, utils.json_rarity_map[src_json['rarity']])] else: fields[field_rarity] = [(-1, src_json['rarity'])] parsed = False else: parsed = False if 'loyalty' in src_json: fields[field_loyalty] = [(-1, utils.to_unary(str(src_json['loyalty'])))] p_t = '' parsed_pt = True if 'power' in src_json: p_t = utils.to_ascii(utils.to_unary(src_json['power'])) + '/' # hardcoded parsed_pt = False if 'toughness' in src_json: p_t = p_t + utils.to_ascii(utils.to_unary(src_json['toughness'])) parsed_pt = True elif 'toughness' in src_json: p_t = '/' + utils.to_ascii(utils.to_unary(src_json['toughness'])) # hardcoded parsed_pt = False if p_t: fields[field_pt] = [(-1, p_t)] parsed = parsed and parsed_pt # similarly, return the actual Manatext object if 'text' in src_json: text_val = src_json['text'].lower() text_val = transforms.text_pass_1_strip_rt(text_val) text_val = transforms.text_pass_2_cardname(text_val, name_orig) text_val = transforms.text_pass_3_unary(text_val) text_val = transforms.text_pass_4a_dashes(text_val) text_val = transforms.text_pass_4b_x(text_val) text_val = transforms.text_pass_5_counters(text_val) text_val = transforms.text_pass_6_uncast(text_val) text_val = transforms.text_pass_7_choice(text_val) text_val = transforms.text_pass_8_equip(text_val) text_val = transforms.text_pass_9_newlines(text_val) text_val = transforms.text_pass_10_symbols(text_val) text_val = utils.to_ascii(text_val) text_val = text_val.strip() mtext = Manatext(text_val, fmt = 'json') valid = valid and mtext.valid fields[field_text] = [(-1, mtext)] # we don't need to worry about bsides because we handle that in the constructor return parsed, valid and fields_check_valid(fields), fields
def to_mse(self, print_raw=False, vdump=False): outstr = '' # need a 'card' string first outstr += 'card:\n' cardname = titlecase( transforms.name_unpass_1_dashes(self.__dict__[field_name])) outstr += '\tname: ' + cardname + '\n' if self.__dict__[field_rarity]: if self.__dict__[field_rarity] in utils.json_rarity_unmap: rarity = utils.json_rarity_unmap[self.__dict__[field_rarity]] else: rarity = self.__dict__[field_rarity] outstr += '\trarity: ' + rarity.lower() + '\n' if not self.__dict__[field_cost].none: outstr += ('\tcasting cost: ' + self.__dict__[field_cost].format().replace( '{', '').replace('}', '') + '\n') outstr += '\tsuper type: ' + ' '.join( self.__dict__[field_supertypes] + self.__dict__[field_types]).title() + '\n' if self.__dict__[field_subtypes]: outstr += '\tsub type: ' + ' '.join( self.__dict__[field_subtypes]).title() + '\n' if self.__dict__[field_pt]: ptstring = utils.from_unary(self.__dict__[field_pt]).split('/') if (len(ptstring) > 1 ): # really don't want to be accessing anything nonexistent. outstr += '\tpower: ' + ptstring[0] + '\n' outstr += '\ttoughness: ' + ptstring[1] + '\n' if self.__dict__[field_text].text: mtext = self.__dict__[field_text].text mtext = transforms.text_unpass_1_choice(mtext, delimit=False) mtext = transforms.text_unpass_2_counters(mtext) mtext = transforms.text_unpass_3_uncast(mtext) mtext = transforms.text_unpass_4_unary(mtext) mtext = transforms.text_unpass_5_symbols(mtext, False, False) mtext = sentencecase(mtext) # I don't really want these MSE specific passes in transforms, # but they could be pulled out separately somewhere else in here. mtext = mtext.replace( utils.this_marker, '<atom-cardname><nospellcheck>' + utils.this_marker + '</nospellcheck></atom-cardname>') mtext = transforms.text_unpass_6_cardname(mtext, cardname) mtext = transforms.text_unpass_7_newlines(mtext) mtext = transforms.text_unpass_8_unicode(mtext) newtext = Manatext('') newtext.text = mtext newtext.costs = self.__dict__[field_text].costs newtext = newtext.format() # See, the thing is, I think it's simplest and easiest to just leave it like this. # What could possibly go wrong? newtext = newtext.replace('{', '<sym-auto>').replace( '}', '</sym-auto>') else: newtext = '' # Annoying special case for bsides; # This could be improved by having an intermediate function that returned # all of the formatted fields in a data structure and a separate wrapper # that actually packed them into the MSE format. if self.bside: newtext = newtext.replace('\n', '\n\t\t') outstr += '\trule text:\n\t\t' + newtext + '\n' outstr += '\tstylesheet: new-split\n' cardname2 = titlecase( transforms.name_unpass_1_dashes( self.bside.__dict__[field_name])) outstr += '\tname 2: ' + cardname2 + '\n' if self.bside.__dict__[field_rarity]: if self.bside.__dict__[ field_rarity] in utils.json_rarity_unmap: rarity2 = utils.json_rarity_unmap[ self.bside.__dict__[field_rarity]] else: rarity2 = self.bside.__dict__[field_rarity] outstr += '\trarity 2: ' + rarity2.lower() + '\n' if not self.bside.__dict__[field_cost].none: outstr += ('\tcasting cost 2: ' + self.bside.__dict__[field_cost].format().replace( '{', '').replace('}', '') + '\n') outstr += ('\tsuper type 2: ' + ' '.join(self.bside.__dict__[field_supertypes] + self.bside.__dict__[field_types]).title() + '\n') if self.bside.__dict__[field_subtypes]: outstr += ('\tsub type 2: ' + ' '.join( self.bside.__dict__[field_subtypes]).title() + '\n') if self.bside.__dict__[field_pt]: ptstring2 = utils.from_unary( self.bside.__dict__[field_pt]).split('/') if ( len(ptstring2) > 1 ): # really don't want to be accessing anything nonexistent. outstr += '\tpower 2: ' + ptstring2[0] + '\n' outstr += '\ttoughness 2: ' + ptstring2[1] + '\n' if self.bside.__dict__[field_text].text: mtext2 = self.bside.__dict__[field_text].text mtext2 = transforms.text_unpass_1_choice(mtext2, delimit=False) mtext2 = transforms.text_unpass_2_counters(mtext2) mtext2 = transforms.text_unpass_3_uncast(mtext2) mtext2 = transforms.text_unpass_4_unary(mtext2) mtext2 = transforms.text_unpass_5_symbols(mtext2, False, False) mtext2 = sentencecase(mtext2) mtext2 = mtext2.replace( utils.this_marker, '<atom-cardname><nospellcheck>' + utils.this_marker + '</nospellcheck></atom-cardname>') mtext2 = transforms.text_unpass_6_cardname(mtext2, cardname2) mtext2 = transforms.text_unpass_7_newlines(mtext2) mtext2 = transforms.text_unpass_8_unicode(mtext2) newtext2 = Manatext('') newtext2.text = mtext2 newtext2.costs = self.bside.__dict__[field_text].costs newtext2 = newtext2.format() newtext2 = newtext2.replace('{', '<sym-auto>').replace( '}', '</sym-auto>') newtext2 = newtext2.replace('\n', '\n\t\t') outstr += '\trule text 2:\n\t\t' + newtext2 + '\n' # Need to do Special Things if it's a planeswalker. # This code mostly works, but it won't get quite the right thing if the planeswalker # abilities don't come before any other ones. Should be fixed. elif "planeswalker" in str(self.__dict__[field_types]): outstr += '\tstylesheet: m15-planeswalker\n' # set up the loyalty cost fields using regex to find how many there are. i = 0 lcost_regex = r'[-+]?\d+: ' # 1+ figures, might be 0. for lcost in re.findall(lcost_regex, newtext): i += 1 outstr += '\tloyalty cost ' + str(i) + ': ' + lcost + '\n' # sub out the loyalty costs. newtext = re.sub(lcost_regex, '', newtext) # We need to uppercase again, because MSE won't magically capitalize for us # like it does after semicolons. # Abusing passes like this is terrible, should really fix sentencecase. newtext = transforms.text_pass_9_newlines(newtext) newtext = sentencecase(newtext) newtext = transforms.text_unpass_7_newlines(newtext) if self.__dict__[field_loyalty]: outstr += '\tloyalty: ' + utils.from_unary( self.__dict__[field_loyalty]) + '\n' newtext = newtext.replace('\n', '\n\t\t') outstr += '\trule text:\n\t\t' + newtext + '\n' else: newtext = newtext.replace('\n', '\n\t\t') outstr += '\trule text:\n\t\t' + newtext + '\n' # now append all the other useless fields that the setfile expects. outstr += '\thas styling: false\n\ttime created:2015-07-20 22:53:07\n\ttime modified:2015-07-20 22:53:08\n\textra data:\n\timage:\n\tcard code text:\n\tcopyright:\n\timage 2:\n\tcopyright 2:\n\tnotes:' return outstr
def fields_from_json(src_json, linetrans=True): parsed = True valid = True fields = {} # we hardcode in what the things are called in the mtgjson format if 'name' in src_json: name_val = src_json['name'].lower() name_orig = name_val name_val = transforms.name_pass_1_sanitize(name_val) name_val = utils.to_ascii(name_val) fields[field_name] = [(-1, name_val)] else: name_orig = '' parsed = False # return the actual Manacost object if 'manaCost' in src_json: cost = Manacost(src_json['manaCost'], fmt='json') valid = valid and cost.valid parsed = parsed and cost.parsed fields[field_cost] = [(-1, cost)] if 'supertypes' in src_json: fields[field_supertypes] = [(-1, map(lambda s: utils.to_ascii(s.lower()), src_json['supertypes']))] if 'types' in src_json: fields[field_types] = [(-1, map(lambda s: utils.to_ascii(s.lower()), src_json['types']))] else: parsed = False if 'subtypes' in src_json: fields[field_subtypes] = [( -1, map( lambda s: utils.to_ascii(s.lower()) # urza's lands... .replace('"', "'").replace('-', utils.dash_marker), src_json['subtypes']))] if 'rarity' in src_json: if src_json['rarity'] in utils.json_rarity_map: fields[field_rarity] = [ (-1, utils.json_rarity_map[src_json['rarity']]) ] else: fields[field_rarity] = [(-1, src_json['rarity'])] parsed = False else: parsed = False if 'loyalty' in src_json: fields[field_loyalty] = [(-1, utils.to_unary(str(src_json['loyalty']))) ] p_t = '' parsed_pt = True if 'power' in src_json: p_t = utils.to_ascii(utils.to_unary( src_json['power'])) + '/' # hardcoded parsed_pt = False if 'toughness' in src_json: p_t = p_t + utils.to_ascii(utils.to_unary(src_json['toughness'])) parsed_pt = True elif 'toughness' in src_json: p_t = '/' + utils.to_ascii(utils.to_unary( src_json['toughness'])) # hardcoded parsed_pt = False if p_t: fields[field_pt] = [(-1, p_t)] parsed = parsed and parsed_pt # similarly, return the actual Manatext object if 'text' in src_json: text_val = src_json['text'].lower() text_val = transforms.text_pass_1_strip_rt(text_val) text_val = transforms.text_pass_2_cardname(text_val, name_orig) text_val = transforms.text_pass_3_unary(text_val) text_val = transforms.text_pass_4a_dashes(text_val) text_val = transforms.text_pass_4b_x(text_val) text_val = transforms.text_pass_5_counters(text_val) text_val = transforms.text_pass_6_uncast(text_val) text_val = transforms.text_pass_7_choice(text_val) text_val = transforms.text_pass_8_equip(text_val) text_val = transforms.text_pass_9_newlines(text_val) text_val = transforms.text_pass_10_symbols(text_val) if linetrans: text_val = transforms.text_pass_11_linetrans(text_val) text_val = utils.to_ascii(text_val) text_val = text_val.strip() mtext = Manatext(text_val, fmt='json') valid = valid and mtext.valid fields[field_text] = [(-1, mtext)] # we don't need to worry about bsides because we handle that in the constructor return parsed, valid and fields_check_valid(fields), fields
def fields_from_json(src_json, linetrans=True): parsed = True valid = True fields = {} # we hardcode in what the things are called in the mtgjson format if "name" in src_json: name_val = src_json["name"].lower() name_orig = name_val name_val = transforms.name_pass_1_sanitize(name_val) name_val = utils.to_ascii(name_val) fields[field_name] = [(-1, name_val)] else: name_orig = "" parsed = False # return the actual Manacost object if "manaCost" in src_json: cost = Manacost(src_json["manaCost"], fmt="json") valid = valid and cost.valid parsed = parsed and cost.parsed fields[field_cost] = [(-1, cost)] if "supertypes" in src_json: fields[field_supertypes] = [(-1, map(lambda s: utils.to_ascii(s.lower()), src_json["supertypes"]))] if "types" in src_json: fields[field_types] = [(-1, map(lambda s: utils.to_ascii(s.lower()), src_json["types"]))] else: parsed = False if "subtypes" in src_json: fields[field_subtypes] = [ ( -1, map( lambda s: utils.to_ascii(s.lower()) # urza's lands... .replace('"', "'").replace("-", utils.dash_marker), src_json["subtypes"], ), ) ] if "rarity" in src_json: if src_json["rarity"] in utils.json_rarity_map: fields[field_rarity] = [(-1, utils.json_rarity_map[src_json["rarity"]])] else: fields[field_rarity] = [(-1, src_json["rarity"])] parsed = False else: parsed = False if "loyalty" in src_json: fields[field_loyalty] = [(-1, utils.to_unary(str(src_json["loyalty"])))] p_t = "" parsed_pt = True if "power" in src_json: p_t = utils.to_ascii(utils.to_unary(src_json["power"])) + "/" # hardcoded parsed_pt = False if "toughness" in src_json: p_t = p_t + utils.to_ascii(utils.to_unary(src_json["toughness"])) parsed_pt = True elif "toughness" in src_json: p_t = "/" + utils.to_ascii(utils.to_unary(src_json["toughness"])) # hardcoded parsed_pt = False if p_t: fields[field_pt] = [(-1, p_t)] parsed = parsed and parsed_pt # similarly, return the actual Manatext object if "text" in src_json: text_val = src_json["text"].lower() text_val = transforms.text_pass_1_strip_rt(text_val) text_val = transforms.text_pass_2_cardname(text_val, name_orig) text_val = transforms.text_pass_3_unary(text_val) text_val = transforms.text_pass_4a_dashes(text_val) text_val = transforms.text_pass_4b_x(text_val) text_val = transforms.text_pass_5_counters(text_val) text_val = transforms.text_pass_6_uncast(text_val) text_val = transforms.text_pass_7_choice(text_val) text_val = transforms.text_pass_8_equip(text_val) text_val = transforms.text_pass_9_newlines(text_val) text_val = transforms.text_pass_10_symbols(text_val) if linetrans: text_val = transforms.text_pass_11_linetrans(text_val) text_val = utils.to_ascii(text_val) text_val = text_val.strip() mtext = Manatext(text_val, fmt="json") valid = valid and mtext.valid fields[field_text] = [(-1, mtext)] # we don't need to worry about bsides because we handle that in the constructor return parsed, valid and fields_check_valid(fields), fields
def fields_from_json(src_json, linetrans = True, addspaces = False): parsed = True valid = True fields = {} # we hardcode in what the things are called in the mtgjson format if 'name' in src_json: name_val = src_json['name'].lower() name_orig = name_val name_val = transforms.name_pass_1_sanitize(name_val) name_val = utils.to_ascii(name_val) #RMM: Testing out the idea of chopping up names. if addspaces: def intersperse(lst, item): result = [item] * (len(lst) * 2 - 1) result[0::2] = lst return result name_val = intersperse(name_val, ' ') fields[field_name] = [(-1, name_val)] else: name_orig = '' parsed = False # return the actual Manacost object if 'manaCost' in src_json: cost = Manacost(src_json['manaCost'], fmt = 'json') valid = valid and cost.valid parsed = parsed and cost.parsed fields[field_cost] = [(-1, cost)] if 'supertypes' in src_json: fields[field_supertypes] = [(-1, [utils.to_ascii(s.lower()) for s in src_json['supertypes']])] if 'types' in src_json: fields[field_types] = [(-1, [utils.to_ascii(s.lower()) for s in src_json['types']])] else: parsed = False if 'subtypes' in src_json: fields[field_subtypes] = [(-1, [utils.to_ascii(s.lower()) # urza's lands... .replace('"', "'").replace('-', utils.dash_marker) for s in src_json['subtypes']])] if 'rarity' in src_json: if src_json['rarity'] in utils.json_rarity_map: fields[field_rarity] = [(-1, utils.json_rarity_map[src_json['rarity']])] else: fields[field_rarity] = [(-1, src_json['rarity'])] parsed = False else: parsed = False if 'loyalty' in src_json: fields[field_loyalty] = [(-1, utils.to_unary(str(src_json['loyalty'])))] p_t = '' parsed_pt = True if 'power' in src_json: p_t = utils.to_ascii(utils.to_unary(src_json['power'])) + ' / ' # hardcoded parsed_pt = False if 'toughness' in src_json: p_t = p_t + utils.to_ascii(utils.to_unary(src_json['toughness'])) parsed_pt = True elif 'toughness' in src_json: p_t = ' / ' + utils.to_ascii(utils.to_unary(src_json['toughness'])) # hardcoded parsed_pt = False if p_t: fields[field_pt] = [(-1, p_t)] parsed = parsed and parsed_pt # similarly, return the actual Manatext object if 'text' in src_json: text_val = src_json['text'].lower() text_val = transforms.text_pass_1_strip_rt(text_val) text_val = transforms.text_pass_2_cardname(text_val, name_orig) text_val = transforms.text_pass_3_unary(text_val) text_val = transforms.text_pass_4a_dashes(text_val) text_val = transforms.text_pass_4b_x(text_val) text_val = transforms.text_pass_5_counters(text_val) text_val = transforms.text_pass_6_uncast(text_val) text_val = transforms.text_pass_7_choice(text_val) text_val = transforms.text_pass_8_equip(text_val) text_val = transforms.text_pass_9_newlines(text_val) text_val = transforms.text_pass_10_symbols(text_val) if linetrans: text_val = transforms.text_pass_11_linetrans(text_val) if addspaces: text_val = transforms.text_pass_12_addspaces(text_val) text_val = utils.to_ascii(text_val) text_val = text_val.strip() mtext = Manatext(text_val, fmt = 'json') valid = valid and mtext.valid fields[field_text] = [(-1, mtext)] # we don't need to worry about bsides because we handle that in the constructor return parsed, valid and fields_check_valid(fields), fields