Merge branch 'master' of https://github.com/reimannsum/mtgencode into reimannsum-master
Conflicts: decode.py lib/cardlib.py lib/utils.py Moved massive html header string into a separate file.
This commit is contained in:
commit
ccb112021e
7 changed files with 131 additions and 27 deletions
24
decode.py
24
decode.py
|
@ -17,7 +17,7 @@ def exclude_sets(cardset):
|
||||||
|
|
||||||
def main(fname, oname = None, verbose = True, encoding = 'std',
|
def main(fname, oname = None, verbose = True, encoding = 'std',
|
||||||
gatherer = False, for_forum = False, for_mse = False,
|
gatherer = False, for_forum = False, for_mse = False,
|
||||||
creativity = False, vdump = False):
|
creativity = False, vdump = False, for_html = False):
|
||||||
|
|
||||||
fmt_ordered = cardlib.fmt_ordered_default
|
fmt_ordered = cardlib.fmt_ordered_default
|
||||||
|
|
||||||
|
@ -53,6 +53,11 @@ def main(fname, oname = None, verbose = True, encoding = 'std',
|
||||||
if for_mse:
|
if for_mse:
|
||||||
# have to prepend a massive chunk of formatting info
|
# have to prepend a massive chunk of formatting info
|
||||||
writer.write(utils.mse_prepend)
|
writer.write(utils.mse_prepend)
|
||||||
|
|
||||||
|
if for_html:
|
||||||
|
# have to preapend html info
|
||||||
|
writer.write(utils.html_prepend)
|
||||||
|
|
||||||
for card in cards:
|
for card in cards:
|
||||||
if for_mse:
|
if for_mse:
|
||||||
writer.write(card.to_mse().encode('utf-8'))
|
writer.write(card.to_mse().encode('utf-8'))
|
||||||
|
@ -68,7 +73,7 @@ def main(fname, oname = None, verbose = True, encoding = 'std',
|
||||||
writer.write(('\n' + fstring[:-1]).replace('\n', '\n\t\t'))
|
writer.write(('\n' + fstring[:-1]).replace('\n', '\n\t\t'))
|
||||||
else:
|
else:
|
||||||
writer.write(card.format(gatherer = gatherer, for_forum = for_forum,
|
writer.write(card.format(gatherer = gatherer, for_forum = for_forum,
|
||||||
vdump = vdump).encode('utf-8'))
|
vdump = vdump, for_html = for_html).encode('utf-8'))
|
||||||
|
|
||||||
if creativity:
|
if creativity:
|
||||||
cstring = '~~ closest cards ~~\n'
|
cstring = '~~ closest cards ~~\n'
|
||||||
|
@ -95,8 +100,15 @@ def main(fname, oname = None, verbose = True, encoding = 'std',
|
||||||
if for_mse:
|
if for_mse:
|
||||||
# more formatting info
|
# more formatting info
|
||||||
writer.write('version control:\n\ttype: none\napprentice code: ')
|
writer.write('version control:\n\ttype: none\napprentice code: ')
|
||||||
|
if for_html:
|
||||||
|
# closing the html file
|
||||||
|
writer.write(utils.html_append)
|
||||||
|
|
||||||
if oname:
|
if oname:
|
||||||
|
if for_html:
|
||||||
|
print oname
|
||||||
|
# if ('.html' != oname[-])
|
||||||
|
# oname += '.html'
|
||||||
if verbose:
|
if verbose:
|
||||||
print 'Writing output to: ' + oname
|
print 'Writing output to: ' + oname
|
||||||
with open(oname, 'w') as ofile:
|
with open(oname, 'w') as ofile:
|
||||||
|
@ -144,10 +156,14 @@ if __name__ == '__main__':
|
||||||
help='dump out lots of information about invalid cards')
|
help='dump out lots of information about invalid cards')
|
||||||
parser.add_argument('-v', '--verbose', action='store_true',
|
parser.add_argument('-v', '--verbose', action='store_true',
|
||||||
help='verbose output')
|
help='verbose output')
|
||||||
parser.add_argument('-mse', '--mse', action='store_true', help='use Magic Set Editor 2 encoding; will output as .mse-set file')
|
parser.add_argument('-mse', '--mse', action='store_true',
|
||||||
|
help='use Magic Set Editor 2 encoding; will output as .mse-set file')
|
||||||
|
parser.add_argument('-html', '--html', action='store_true', help='create a .html file with pretty forum formatting')
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
main(args.infile, args.outfile, verbose = args.verbose, encoding = args.encoding,
|
main(args.infile, args.outfile, verbose = args.verbose, encoding = args.encoding,
|
||||||
gatherer = args.gatherer, for_forum = args.forum, for_mse = args.mse,
|
gatherer = args.gatherer, for_forum = args.forum, for_mse = args.mse,
|
||||||
creativity = args.creativity, vdump = args.dump)
|
creativity = args.creativity, vdump = args.dump, for_html = args.html)
|
||||||
|
|
||||||
exit(0)
|
exit(0)
|
||||||
|
|
|
@ -392,6 +392,7 @@ class Card:
|
||||||
def __init__(self, src, fmt_ordered = fmt_ordered_default,
|
def __init__(self, src, fmt_ordered = fmt_ordered_default,
|
||||||
fmt_labeled = fmt_labeled_default,
|
fmt_labeled = fmt_labeled_default,
|
||||||
fieldsep = utils.fieldsep, linetrans = True):
|
fieldsep = utils.fieldsep, linetrans = True):
|
||||||
|
|
||||||
# source fields, exactly one will be set
|
# source fields, exactly one will be set
|
||||||
self.json = None
|
self.json = None
|
||||||
self.raw = None
|
self.raw = None
|
||||||
|
@ -554,10 +555,7 @@ class Card:
|
||||||
# the NN representation, use str() or format() for output intended for human
|
# the NN representation, use str() or format() for output intended for human
|
||||||
# readers.
|
# readers.
|
||||||
|
|
||||||
def encode(self, fmt_ordered = fmt_ordered_default,
|
def encode(self, fmt_ordered = fmt_ordered_default, fmt_labeled = None, fieldsep = utils.fieldsep, randomize_fields = False, randomize_mana = False, initial_sep = True, final_sep = True):
|
||||||
fmt_labeled = None, fieldsep = utils.fieldsep,
|
|
||||||
randomize_fields = False, randomize_mana = False,
|
|
||||||
initial_sep = True, final_sep = True):
|
|
||||||
outfields = []
|
outfields = []
|
||||||
|
|
||||||
for field in fmt_ordered:
|
for field in fmt_ordered:
|
||||||
|
@ -604,7 +602,7 @@ class Card:
|
||||||
|
|
||||||
return outstr
|
return outstr
|
||||||
|
|
||||||
def format(self, gatherer = False, for_forum = False, for_mse = False, vdump = False):
|
def format(self, gatherer = False, for_forum = False, for_mse = False, vdump = False, for_html = False):
|
||||||
outstr = ''
|
outstr = ''
|
||||||
if gatherer:
|
if gatherer:
|
||||||
cardname = titlecase(transforms.name_unpass_1_dashes(self.__dict__[field_name]))
|
cardname = titlecase(transforms.name_unpass_1_dashes(self.__dict__[field_name]))
|
||||||
|
@ -659,7 +657,7 @@ class Card:
|
||||||
mtext = transforms.text_unpass_2_counters(mtext)
|
mtext = transforms.text_unpass_2_counters(mtext)
|
||||||
#mtext = transforms.text_unpass_3_uncast(mtext)
|
#mtext = transforms.text_unpass_3_uncast(mtext)
|
||||||
mtext = transforms.text_unpass_4_unary(mtext)
|
mtext = transforms.text_unpass_4_unary(mtext)
|
||||||
mtext = transforms.text_unpass_5_symbols(mtext, for_forum)
|
mtext = transforms.text_unpass_5_symbols(mtext, for_forum, for_html)
|
||||||
mtext = sentencecase(mtext)
|
mtext = sentencecase(mtext)
|
||||||
mtext = transforms.text_unpass_6_cardname(mtext, cardname)
|
mtext = transforms.text_unpass_6_cardname(mtext, cardname)
|
||||||
mtext = transforms.text_unpass_7_newlines(mtext)
|
mtext = transforms.text_unpass_7_newlines(mtext)
|
||||||
|
@ -685,6 +683,61 @@ class Card:
|
||||||
outstr += '[/i]'
|
outstr += '[/i]'
|
||||||
outstr += '\n'
|
outstr += '\n'
|
||||||
|
|
||||||
|
elif for_html:
|
||||||
|
outstr += '<div class="card-text">'
|
||||||
|
cardname = self.__dict__[field_name]
|
||||||
|
#cardname = transforms.name_unpass_1_dashes(self.__dict__[field_name])
|
||||||
|
if vdump and not cardname:
|
||||||
|
cardname = '_NONAME_'
|
||||||
|
outstr += cardname + ' '
|
||||||
|
|
||||||
|
coststr = self.__dict__[field_cost].format(for_html = for_html)
|
||||||
|
if vdump or not coststr == '_NOCOST_':
|
||||||
|
outstr += coststr
|
||||||
|
outstr += '<br>'
|
||||||
|
|
||||||
|
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 += ' (' + rarity.lower() + ') '
|
||||||
|
outstr += '\n<hr><b>'
|
||||||
|
|
||||||
|
outstr += ' '.join(self.__dict__[field_supertypes] + self.__dict__[field_types])
|
||||||
|
if self.__dict__[field_subtypes]:
|
||||||
|
outstr += ' ' + utils.dash_marker + ' ' + ' '.join(self.__dict__[field_subtypes])
|
||||||
|
outstr += '</b><hr>\n'
|
||||||
|
|
||||||
|
if self.__dict__[field_text].text:
|
||||||
|
mtext = self.__dict__[field_text].text
|
||||||
|
mtext = transforms.text_unpass_1_choice(mtext, delimit = True)
|
||||||
|
#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,for_forum, for_html)
|
||||||
|
#mtext = transforms.text_unpass_6_cardname(mtext, cardname)
|
||||||
|
mtext = transforms.text_unpass_7_newlines(mtext).replace("\n", "<br>")
|
||||||
|
#mtext = transforms.text_unpass_8_unicode(mtext)
|
||||||
|
newtext = Manatext('')
|
||||||
|
newtext.text = mtext
|
||||||
|
newtext.costs = self.__dict__[field_text].costs
|
||||||
|
outstr += newtext.format(for_html = for_html) + '\n'
|
||||||
|
|
||||||
|
if self.__dict__[field_pt]:
|
||||||
|
outstr += '<br>(' + utils.from_unary(self.__dict__[field_pt]) + ')<br>'
|
||||||
|
outstr += '\n'
|
||||||
|
|
||||||
|
if self.__dict__[field_loyalty]:
|
||||||
|
outstr += '((' + utils.from_unary(self.__dict__[field_loyalty]) + '))'
|
||||||
|
outstr += '\n'
|
||||||
|
|
||||||
|
if vdump and self.__dict__[field_other]:
|
||||||
|
outstr += utils.dash_marker * 2
|
||||||
|
outstr += '\n'
|
||||||
|
for idx, value in self.__dict__[field_other]:
|
||||||
|
outstr += '<' + str(idx) + '> ' + str(value)
|
||||||
|
outstr += '\n'
|
||||||
else:
|
else:
|
||||||
cardname = self.__dict__[field_name]
|
cardname = self.__dict__[field_name]
|
||||||
#cardname = transforms.name_unpass_1_dashes(self.__dict__[field_name])
|
#cardname = transforms.name_unpass_1_dashes(self.__dict__[field_name])
|
||||||
|
@ -720,7 +773,7 @@ class Card:
|
||||||
#mtext = transforms.text_unpass_2_counters(mtext)
|
#mtext = transforms.text_unpass_2_counters(mtext)
|
||||||
#mtext = transforms.text_unpass_3_uncast(mtext)
|
#mtext = transforms.text_unpass_3_uncast(mtext)
|
||||||
mtext = transforms.text_unpass_4_unary(mtext)
|
mtext = transforms.text_unpass_4_unary(mtext)
|
||||||
mtext = transforms.text_unpass_5_symbols(mtext, for_forum)
|
mtext = transforms.text_unpass_5_symbols(mtext, for_forum, for_html)
|
||||||
#mtext = transforms.text_unpass_6_cardname(mtext, cardname)
|
#mtext = transforms.text_unpass_6_cardname(mtext, cardname)
|
||||||
mtext = transforms.text_unpass_7_newlines(mtext)
|
mtext = transforms.text_unpass_7_newlines(mtext)
|
||||||
#mtext = transforms.text_unpass_8_unicode(mtext)
|
#mtext = transforms.text_unpass_8_unicode(mtext)
|
||||||
|
@ -745,9 +798,13 @@ class Card:
|
||||||
outstr += '\n'
|
outstr += '\n'
|
||||||
|
|
||||||
if self.bside:
|
if self.bside:
|
||||||
|
if for_html:
|
||||||
|
outstr += "<hr><hr>\n"
|
||||||
|
else:
|
||||||
outstr += utils.dash_marker * 8 + '\n'
|
outstr += utils.dash_marker * 8 + '\n'
|
||||||
outstr += self.bside.format(gatherer = gatherer, for_forum = for_forum)
|
outstr += self.bside.format(gatherer = gatherer, for_forum = for_forum, for_html = for_html)
|
||||||
|
if for_html:
|
||||||
|
outstr += "</div>"
|
||||||
return outstr
|
return outstr
|
||||||
|
|
||||||
def to_mse(self, print_raw = False, vdump = False):
|
def to_mse(self, print_raw = False, vdump = False):
|
||||||
|
@ -788,7 +845,7 @@ class Card:
|
||||||
mtext = transforms.text_unpass_2_counters(mtext)
|
mtext = transforms.text_unpass_2_counters(mtext)
|
||||||
mtext = transforms.text_unpass_3_uncast(mtext)
|
mtext = transforms.text_unpass_3_uncast(mtext)
|
||||||
mtext = transforms.text_unpass_4_unary(mtext)
|
mtext = transforms.text_unpass_4_unary(mtext)
|
||||||
mtext = transforms.text_unpass_5_symbols(mtext, False)
|
mtext = transforms.text_unpass_5_symbols(mtext, False, False)
|
||||||
mtext = sentencecase(mtext)
|
mtext = sentencecase(mtext)
|
||||||
# I don't really want these MSE specific passes in transforms,
|
# I don't really want these MSE specific passes in transforms,
|
||||||
# but they could be pulled out separately somewhere else in here.
|
# but they could be pulled out separately somewhere else in here.
|
||||||
|
@ -855,7 +912,7 @@ class Card:
|
||||||
mtext2 = transforms.text_unpass_2_counters(mtext2)
|
mtext2 = transforms.text_unpass_2_counters(mtext2)
|
||||||
mtext2 = transforms.text_unpass_3_uncast(mtext2)
|
mtext2 = transforms.text_unpass_3_uncast(mtext2)
|
||||||
mtext2 = transforms.text_unpass_4_unary(mtext2)
|
mtext2 = transforms.text_unpass_4_unary(mtext2)
|
||||||
mtext2 = transforms.text_unpass_5_symbols(mtext2, False)
|
mtext2 = transforms.text_unpass_5_symbols(mtext2, False, False)
|
||||||
mtext2 = sentencecase(mtext2)
|
mtext2 = sentencecase(mtext2)
|
||||||
mtext2 = mtext2.replace(utils.this_marker, '<atom-cardname><nospellcheck>'
|
mtext2 = mtext2.replace(utils.this_marker, '<atom-cardname><nospellcheck>'
|
||||||
+ utils.this_marker + '</nospellcheck></atom-cardname>')
|
+ utils.this_marker + '</nospellcheck></atom-cardname>')
|
||||||
|
|
1
lib/html_extra_data.py
Normal file
1
lib/html_extra_data.py
Normal file
File diff suppressed because one or more lines are too long
|
@ -108,12 +108,13 @@ class Manacost:
|
||||||
return utils.mana_untranslate(utils.mana_open_delimiter + ''.join(self.sequence)
|
return utils.mana_untranslate(utils.mana_open_delimiter + ''.join(self.sequence)
|
||||||
+ utils.mana_close_delimiter)
|
+ utils.mana_close_delimiter)
|
||||||
|
|
||||||
def format(self, for_forum = False):
|
def format(self, for_forum = False, for_html = False):
|
||||||
if self.none:
|
if self.none:
|
||||||
return '_NOCOST_'
|
return '_NOCOST_'
|
||||||
|
|
||||||
else:
|
else:
|
||||||
return utils.mana_untranslate(utils.mana_open_delimiter + ''.join(self.sequence)
|
return utils.mana_untranslate(utils.mana_open_delimiter + ''.join(self.sequence)
|
||||||
+ utils.mana_close_delimiter, for_forum)
|
+ utils.mana_close_delimiter, for_forum, for_html)
|
||||||
|
|
||||||
def encode(self, randomize = False):
|
def encode(self, randomize = False):
|
||||||
if self.none:
|
if self.none:
|
||||||
|
@ -177,10 +178,10 @@ class Manatext:
|
||||||
text = text.replace(utils.reserved_mana_marker, str(cost), 1)
|
text = text.replace(utils.reserved_mana_marker, str(cost), 1)
|
||||||
return text
|
return text
|
||||||
|
|
||||||
def format(self, for_forum = False):
|
def format(self, for_forum = False, for_html = False):
|
||||||
text = self.text
|
text = self.text
|
||||||
for cost in self.costs:
|
for cost in self.costs:
|
||||||
text = text.replace(utils.reserved_mana_marker, cost.format(for_forum = for_forum), 1)
|
text = text.replace(utils.reserved_mana_marker, cost.format(for_forum = for_forum, for_html = for_html), 1)
|
||||||
return text
|
return text
|
||||||
|
|
||||||
def encode(self, randomize = False):
|
def encode(self, randomize = False):
|
||||||
|
|
|
@ -515,8 +515,8 @@ def text_unpass_4_unary(s):
|
||||||
return utils.from_unary(s)
|
return utils.from_unary(s)
|
||||||
|
|
||||||
|
|
||||||
def text_unpass_5_symbols(s, for_forum):
|
def text_unpass_5_symbols(s, for_forum, for_html):
|
||||||
return utils.from_symbols(s, for_forum = for_forum)
|
return utils.from_symbols(s, for_forum = for_forum, for_html = for_html)
|
||||||
|
|
||||||
|
|
||||||
def text_unpass_6_cardname(s, name):
|
def text_unpass_6_cardname(s, name):
|
||||||
|
|
33
lib/utils.py
33
lib/utils.py
|
@ -9,6 +9,12 @@ import config
|
||||||
# special chunk of text that Magic Set Editor 2 requires at the start of all set files.
|
# special chunk of text that Magic Set Editor 2 requires at the start of all set files.
|
||||||
mse_prepend = 'mse version: 0.3.8\ngame: magic\nstylesheet: m15\nset info:\n\tsymbol:\nstyling:\n\tmagic-m15:\n\t\ttext box mana symbols: magic-mana-small.mse-symbol-font\n\t\toverlay:\n\tmagic-m15-clear:\n\t\ttext box mana symbols: magic-mana-small.mse-symbol-font\n\t\toverlay: \n\tmagic-m15-extra-improved:\n\t\ttext box mana symbols: magic-mana-small.mse-symbol-font\n\t\tpt box symbols: magic-pt-symbols-extra.mse-symbol-font\n\t\toverlay: \n\tmagic-m15-planeswalker:\n\t\ttext box mana symbols: magic-mana-small.mse-symbol-font\n\t\toverlay: \n\tmagic-m15-planeswalker-promo-black:\n\t\ttext box mana symbols: magic-mana-small.mse-symbol-font\n\t\toverlay: \n\tmagic-m15-promo-dka:\n\t\ttext box mana symbols: magic-mana-small.mse-symbol-font\n\t\toverlay: \n\tmagic-m15-token-clear:\n\t\ttext box mana symbols: magic-mana-small.mse-symbol-font\n\t\toverlay: \n\tmagic-new-planeswalker:\n\t\ttext box mana symbols: magic-mana-small.mse-symbol-font\n\t\toverlay: \n\tmagic-new-planeswalker-4abil:\n\t\ttext box mana symbols: magic-mana-small.mse-symbol-font\n\t\toverlay: \n\tmagic-new-planeswalker-clear:\n\t\ttext box mana symbols: magic-mana-small.mse-symbol-font\n\t\toverlay: \n\tmagic-new-planeswalker-promo-black:\n\t\ttext box mana symbols: magic-mana-small.mse-symbol-font\n\t\toverlay: \n'
|
mse_prepend = 'mse version: 0.3.8\ngame: magic\nstylesheet: m15\nset info:\n\tsymbol:\nstyling:\n\tmagic-m15:\n\t\ttext box mana symbols: magic-mana-small.mse-symbol-font\n\t\toverlay:\n\tmagic-m15-clear:\n\t\ttext box mana symbols: magic-mana-small.mse-symbol-font\n\t\toverlay: \n\tmagic-m15-extra-improved:\n\t\ttext box mana symbols: magic-mana-small.mse-symbol-font\n\t\tpt box symbols: magic-pt-symbols-extra.mse-symbol-font\n\t\toverlay: \n\tmagic-m15-planeswalker:\n\t\ttext box mana symbols: magic-mana-small.mse-symbol-font\n\t\toverlay: \n\tmagic-m15-planeswalker-promo-black:\n\t\ttext box mana symbols: magic-mana-small.mse-symbol-font\n\t\toverlay: \n\tmagic-m15-promo-dka:\n\t\ttext box mana symbols: magic-mana-small.mse-symbol-font\n\t\toverlay: \n\tmagic-m15-token-clear:\n\t\ttext box mana symbols: magic-mana-small.mse-symbol-font\n\t\toverlay: \n\tmagic-new-planeswalker:\n\t\ttext box mana symbols: magic-mana-small.mse-symbol-font\n\t\toverlay: \n\tmagic-new-planeswalker-4abil:\n\t\ttext box mana symbols: magic-mana-small.mse-symbol-font\n\t\toverlay: \n\tmagic-new-planeswalker-clear:\n\t\ttext box mana symbols: magic-mana-small.mse-symbol-font\n\t\toverlay: \n\tmagic-new-planeswalker-promo-black:\n\t\ttext box mana symbols: magic-mana-small.mse-symbol-font\n\t\toverlay: \n'
|
||||||
|
|
||||||
|
# special chunk of text to start an HTML document.
|
||||||
|
box_height = 350
|
||||||
|
import html_extra_data
|
||||||
|
html_prepend = html_extra_data.html_prepend
|
||||||
|
html_append = "\n/body>\n</html>"
|
||||||
|
|
||||||
# encoding formats we know about
|
# encoding formats we know about
|
||||||
formats = [
|
formats = [
|
||||||
'std',
|
'std',
|
||||||
|
@ -136,6 +142,9 @@ mana_json_close_delimiter = mana_close_delimiter
|
||||||
mana_json_hybrid_delimiter = '/'
|
mana_json_hybrid_delimiter = '/'
|
||||||
mana_forum_open_delimiter = '[mana]'
|
mana_forum_open_delimiter = '[mana]'
|
||||||
mana_forum_close_delimiter = '[/mana]'
|
mana_forum_close_delimiter = '[/mana]'
|
||||||
|
mana_html_open_delimiter = "<img class='mana-"
|
||||||
|
mana_html_close_delimiter = "'>"
|
||||||
|
mana_html_hybrid_delimiter = '-'
|
||||||
mana_unary_marker = '' # if the same as unary_marker, from_unary WILL replace numbers in mana costs
|
mana_unary_marker = '' # if the same as unary_marker, from_unary WILL replace numbers in mana costs
|
||||||
mana_unary_counter = unary_counter
|
mana_unary_counter = unary_counter
|
||||||
|
|
||||||
|
@ -386,7 +395,7 @@ def mana_translate(jmanastr):
|
||||||
# convert an encoded mana string back to json
|
# convert an encoded mana string back to json
|
||||||
mana_symlen_min = min([len(sym) for sym in mana_symall_decode])
|
mana_symlen_min = min([len(sym) for sym in mana_symall_decode])
|
||||||
mana_symlen_max = max([len(sym) for sym in mana_symall_decode])
|
mana_symlen_max = max([len(sym) for sym in mana_symall_decode])
|
||||||
def mana_untranslate(manastr, for_forum = False):
|
def mana_untranslate(manastr, for_forum = False, for_html = False):
|
||||||
inner = manastr[1:-1]
|
inner = manastr[1:-1]
|
||||||
jmanastr = ''
|
jmanastr = ''
|
||||||
colorless_total = 0
|
colorless_total = 0
|
||||||
|
@ -406,6 +415,12 @@ def mana_untranslate(manastr, for_forum = False):
|
||||||
idx += symlen
|
idx += symlen
|
||||||
if for_forum:
|
if for_forum:
|
||||||
jmanastr = jmanastr + mana_decode_direct_forum(sym)
|
jmanastr = jmanastr + mana_decode_direct_forum(sym)
|
||||||
|
if for_html:
|
||||||
|
jmanastr = jmanastr + mana_decode_direct(sym)
|
||||||
|
jmanastr = jmanastr.replace(mana_open_delimiter, mana_html_open_delimiter)
|
||||||
|
jmanastr = jmanastr.replace(mana_close_delimiter, mana_html_close_delimiter)
|
||||||
|
jmanastr = jmanastr.replace(mana_open_delimiter, mana_html_open_delimiter)
|
||||||
|
jmanastr = jmanastr.replace(mana_json_hybrid_delimiter, mana_html_hybrid_delimiter)
|
||||||
else:
|
else:
|
||||||
jmanastr = jmanastr + mana_decode_direct(sym)
|
jmanastr = jmanastr + mana_decode_direct(sym)
|
||||||
break
|
break
|
||||||
|
@ -419,6 +434,13 @@ def mana_untranslate(manastr, for_forum = False):
|
||||||
return (mana_forum_open_delimiter + ('' if colorless_total == 0
|
return (mana_forum_open_delimiter + ('' if colorless_total == 0
|
||||||
else str(colorless_total))
|
else str(colorless_total))
|
||||||
+ jmanastr + mana_forum_close_delimiter)
|
+ jmanastr + mana_forum_close_delimiter)
|
||||||
|
if for_html:
|
||||||
|
if jmanastr == '':
|
||||||
|
return mana_html_open_delimiter + str(colorless_total) + mana_html_close_delimiter
|
||||||
|
else:
|
||||||
|
return (mana_html_open_delimiter + ('' if colorless_total == 0
|
||||||
|
else str(colorless_total))
|
||||||
|
+ mana_html_close_delimiter + jmanastr)
|
||||||
else:
|
else:
|
||||||
if jmanastr == '':
|
if jmanastr == '':
|
||||||
return mana_json_open_delimiter + str(colorless_total) + mana_json_close_delimiter
|
return mana_json_open_delimiter + str(colorless_total) + mana_json_close_delimiter
|
||||||
|
@ -464,6 +486,11 @@ symbol_forum_trans = {
|
||||||
tap_marker : mana_forum_open_delimiter + json_symbol_tap + mana_forum_close_delimiter,
|
tap_marker : mana_forum_open_delimiter + json_symbol_tap + mana_forum_close_delimiter,
|
||||||
untap_marker : mana_forum_open_delimiter + json_symbol_untap + mana_forum_close_delimiter,
|
untap_marker : mana_forum_open_delimiter + json_symbol_untap + mana_forum_close_delimiter,
|
||||||
}
|
}
|
||||||
|
symbol_html_trans = {
|
||||||
|
tap_marker : mana_html_open_delimiter + json_symbol_tap + mana_html_close_delimiter,
|
||||||
|
untap_marker : mana_html_open_delimiter + json_symbol_untap + mana_html_close_delimiter,
|
||||||
|
}
|
||||||
|
|
||||||
json_symbol_regex = (re.escape(mana_json_open_delimiter) + '['
|
json_symbol_regex = (re.escape(mana_json_open_delimiter) + '['
|
||||||
+ json_symbol_tap + json_symbol_tap.lower()
|
+ json_symbol_tap + json_symbol_tap.lower()
|
||||||
+ json_symbol_untap + json_symbol_untap.lower()
|
+ json_symbol_untap + json_symbol_untap.lower()
|
||||||
|
@ -476,7 +503,7 @@ def to_symbols(s):
|
||||||
s = s.replace(jsymstr, json_symbol_trans[jsymstr])
|
s = s.replace(jsymstr, json_symbol_trans[jsymstr])
|
||||||
return s
|
return s
|
||||||
|
|
||||||
def from_symbols(s, for_forum = False):
|
def from_symbols(s, for_forum = False, for_html = False):
|
||||||
symstrs = re.findall(symbol_regex, s)
|
symstrs = re.findall(symbol_regex, s)
|
||||||
#for symstr in sorted(symstrs, lambda x,y: cmp(len(x), len(y)), reverse = True):
|
#for symstr in sorted(symstrs, lambda x,y: cmp(len(x), len(y)), reverse = True):
|
||||||
# We have to do the right thing here, because the thing we replace exists in the thing
|
# We have to do the right thing here, because the thing we replace exists in the thing
|
||||||
|
@ -484,6 +511,8 @@ def from_symbols(s, for_forum = False):
|
||||||
for symstr in set(symstrs):
|
for symstr in set(symstrs):
|
||||||
if for_forum:
|
if for_forum:
|
||||||
s = s.replace(symstr, symbol_forum_trans[symstr])
|
s = s.replace(symstr, symbol_forum_trans[symstr])
|
||||||
|
elif for_html:
|
||||||
|
s = s.replace(symstr, symbol_html_trans[symstr])
|
||||||
else:
|
else:
|
||||||
s = s.replace(symstr, symbol_trans[symstr])
|
s = s.replace(symstr, symbol_trans[symstr])
|
||||||
return s
|
return s
|
||||||
|
|
|
@ -91,10 +91,10 @@ def sortcards(cards):
|
||||||
|
|
||||||
# color classes need to find the mana cost
|
# color classes need to find the mana cost
|
||||||
fields = card.split('|')
|
fields = card.split('|')
|
||||||
if len(fields) != 10:
|
if len(fields) != 11:
|
||||||
classes['unknown color'] += [card]
|
classes['unknown color'] += [card]
|
||||||
else:
|
else:
|
||||||
cost = fields[7]
|
cost = fields[8]
|
||||||
color_count = 0
|
color_count = 0
|
||||||
if 'W' in cost or 'U' in cost or 'B' in cost or 'R' in cost or 'G' in cost:
|
if 'W' in cost or 'U' in cost or 'B' in cost or 'R' in cost or 'G' in cost:
|
||||||
if 'W' in cost:
|
if 'W' in cost:
|
||||||
|
|
Loading…
Reference in a new issue