def get_text(): # get_games_func = GAME_DB.getGamesIdSortedById get_games_func = GAME_DB.getGamesIdSortedByName games_list = {} # for unique for id in get_games_func(): gi = GAME_DB.get(id) games_list[gi.name] = '' if gi.name != gi.short_name: games_list[gi.short_name] = '' for n in gi.altnames: games_list[n] = '' games_list = list(games_list.keys()) games_list.sort() print('''\ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR ORGANIZATION # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # msgid "" msgstr "" "Project-Id-Version: PySol 0.0.1\\n" "POT-Creation-Date: %s\\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n" "Language-Team: LANGUAGE <*****@*****.**>\\n" "MIME-Version: 1.0\\n" "Content-Type: text/plain; charset=CHARSET\\n" "Content-Transfer-Encoding: ENCODING\\n" "Generated-By: %s 0.1\\n" ''' % (time.asctime(), sys.argv[0])) for g in games_list: print('msgid "%s"\nmsgstr ""\n' % g)
def all_games(sort_by='id'): # rules_dir = 'rules' print('''<table border="2"> <tr><th>ID</th><th>Name</th><th>Alternate names</th><th>Type</th></tr> ''') if sort_by == 'id': get_games_func = GAME_DB.getGamesIdSortedById else: get_games_func = GAME_DB.getGamesIdSortedByName for id in get_games_func(): gi = GAME_DB.get(id) if not gi.rules_filename: rules_fn = getGameRulesFilename(gi.name) else: rules_fn = gi.rules_filename gt = CSI.TYPE_NAME[gi.category] if gt == 'French': gt = 'French (%s)' % GAME_BY_TYPE[gi.si.game_type] name = gi.name altnames = '<br>'.join(gi.altnames) fn = os.path.join(rules_dir, rules_fn) if 1 and os.path.exists(fn): print('''<tr><td>%s</td><td> <a href="%s" title="Rules for this game">%s</a> </td><td>%s</td><td>%s</td></tr> ''' % (id, fn, name, altnames, gt)) else: print('''<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr> ''' % (id, name, altnames, gt)) print('</table>')
def all_games(sort_by='id'): # rules_dir = 'rules' print('''<table border="2"> <tr><th>ID</th><th>Name</th><th>Alternate names</th><th>Type</th></tr> ''') if sort_by == 'id': get_games_func = GAME_DB.getGamesIdSortedById else: get_games_func = GAME_DB.getGamesIdSortedByName for id in get_games_func(): gi = GAME_DB.get(id) if not gi.rules_filename: rules_fn = getGameRulesFilename(gi.name) else: rules_fn = gi.rules_filename gt = CSI.TYPE_NAME[gi.category] if gt == 'French': gt = 'French (%s)' % GAME_BY_TYPE[gi.si.game_type] name = gi.name.encode('utf-8') altnames = '<br>'.join(gi.altnames).encode('utf-8') fn = os.path.join(rules_dir, rules_fn) if 1 and os.path.exists(fn): print('''<tr><td>%s</td><td> <a href="%s" title="Rules for this game">%s</a> </td><td>%s</td><td>%s</td></tr> ''' % (id, fn, name, altnames, gt)) else: print('''<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr> ''' % (id, name, altnames, gt)) print('</table>')
def plain_text(): get_games_func = GAME_DB.getGamesIdSortedByName for id in get_games_func(): gi = GAME_DB.get(id) if gi.category == GI.GC_FRENCH: ##print str(gi.gameclass) ##gc = gi.gameclass ##h = gc.Hint_Class is None and 'None' or gc.Hint_Class.__name__ ##print gi.name.encode('utf-8'), h print gi.name.encode("utf-8") for n in gi.altnames: print n.encode("utf-8")
def plain_text(): get_games_func = GAME_DB.getGamesIdSortedByName for id in get_games_func(): gi = GAME_DB.get(id) if gi.category == GI.GC_FRENCH: # print str(gi.gameclass) # gc = gi.gameclass # h = gc.Hint_Class is None and 'None' or gc.Hint_Class.__name__ # print gi.name.encode('utf-8'), h print(gi.name) for n in gi.altnames: print(n)
def old_plain_text(): # get_games_func = GAME_DB.getGamesIdSortedById get_games_func = GAME_DB.getGamesIdSortedByName games_list = {} # for unique for id in get_games_func(): gi = GAME_DB.get(id) games_list[gi.name] = "" # if gi.name != gi.short_name: # games_list[gi.short_name] = '' for n in gi.altnames: games_list[n] = "" games_list = games_list.keys() games_list.sort() for g in games_list: print g.encode("utf-8")
def old_plain_text(): # get_games_func = GAME_DB.getGamesIdSortedById get_games_func = GAME_DB.getGamesIdSortedByName games_list = {} # for unique for id in get_games_func(): gi = GAME_DB.get(id) games_list[gi.name] = '' # if gi.name != gi.short_name: # games_list[gi.short_name] = '' for n in gi.altnames: games_list[n] = '' games_list = games_list.keys() games_list.sort() for g in games_list: print(g)
def all_games(sort_by="id"): # rules_dir = 'rules' print """<table border="2"> <tr><th>ID</th><th>Name</th><th>Alternate names</th><th>Type</th></tr> """ if sort_by == "id": get_games_func = GAME_DB.getGamesIdSortedById else: get_games_func = GAME_DB.getGamesIdSortedByName for id in get_games_func(): gi = GAME_DB.get(id) if not gi.rules_filename: rules_fn = getGameRulesFilename(gi.name) else: rules_fn = gi.rules_filename gt = CSI.TYPE_NAME[gi.category] if gt == "French": gt = "French (%s)" % GAME_BY_TYPE[gi.si.game_type] name = gi.name.encode("utf-8") altnames = "<br>".join(gi.altnames).encode("utf-8") fn = os.path.join(rules_dir, rules_fn) if 1 and os.path.exists(fn): print """<tr><td>%s</td><td> <a href="%s" title="Rules for this game">%s</a> </td><td>%s</td><td>%s</td></tr> """ % ( id, fn, name, altnames, gt, ) else: print """<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr> """ % ( id, name, altnames, gt, ) print "</table>"
def by_category(): games = GAME_DB.getGamesIdSortedById() games_by_cat = {} for id in games: gi = GAME_DB.get(id) gt = CSI.TYPE_NAME[gi.category] if games_by_cat.has_key(gt): games_by_cat[gt] += 1 else: games_by_cat[gt] = 1 games_by_cat_list = [(i, j) for i, j in games_by_cat.items()] games_by_cat_list.sort(lambda i, j: cmp(j[1], i[1])) ## print '<table border="2"><tr><th>Name</th><th>Number</th></tr>' ## for i in games_by_cat_list: ## print '<tr><td>%s</td><td>%s</td></tr>' % i ## print '</table>' print '<ul>' for i in games_by_cat_list: print '<li>%s (%s games)</li>' % i print '</ul>' return
def by_category(): games = GAME_DB.getGamesIdSortedById() games_by_cat = {} for id in games: gi = GAME_DB.get(id) gt = CSI.TYPE_NAME[gi.category] if games_by_cat.has_key(gt): games_by_cat[gt] += 1 else: games_by_cat[gt] = 1 games_by_cat_list = [(i, j) for i, j in games_by_cat.items()] games_by_cat_list.sort(lambda i, j: cmp(j[1], i[1])) ## print '<table border="2"><tr><th>Name</th><th>Number</th></tr>' ## for i in games_by_cat_list: ## print '<tr><td>%s</td><td>%s</td></tr>' % i ## print '</table>' print "<ul>" for i in games_by_cat_list: print "<li>%s (%s games)</li>" % i print "</ul>" return
def by_category(): games = GAME_DB.getGamesIdSortedById() games_by_cat = {} for id in games: gi = GAME_DB.get(id) gt = CSI.TYPE_NAME[gi.category] if gt in games_by_cat: games_by_cat[gt] += 1 else: games_by_cat[gt] = 1 games_by_cat_list = [(i, j) for i, j in games_by_cat.items()] games_by_cat_list.sort(key=lambda x: x[1]) games_by_cat_list = games_by_cat_list[::-1] # print '<table border="2"><tr><th>Name</th><th>Number</th></tr>' # for i in games_by_cat_list: # print '<tr><td>%s</td><td>%s</td></tr>' % i # print '</table>' print('<ul>') for i in games_by_cat_list: print('<li>%s (%s games)</li>' % i) print('</ul>') return
def by_type(): games = GAME_DB.getGamesIdSortedById() games_by_type = {} for id in games: gi = GAME_DB.get(id) if not GAME_BY_TYPE.has_key(gi.si.game_type): print gi.si.game_type continue gt = GAME_BY_TYPE[gi.si.game_type] if games_by_type.has_key(gt): games_by_type[gt] += 1 else: games_by_type[gt] = 1 games_by_type_list = games_by_type.items() games_by_type_list.sort(lambda i, j: cmp(i[0], j[0])) ## print '<table border="2"><tr><th>Name</th><th>Number</th></tr>' ## for i in games_by_type_list: ## print '<tr><td>%s</td><td>%s</td></tr>' % i ## print '</table>' print '<ul>' for i in games_by_type_list: print '<li>%s (%s games)</li>' % i print '</ul>' return
def by_type(): games = GAME_DB.getGamesIdSortedById() games_by_type = {} for id in games: gi = GAME_DB.get(id) if gi.si.game_type not in GAME_BY_TYPE: print(gi.si.game_type) continue gt = GAME_BY_TYPE[gi.si.game_type] if gt in games_by_type: games_by_type[gt] += 1 else: games_by_type[gt] = 1 games_by_type_list = list(games_by_type.items()) games_by_type_list.sort(key=lambda x: x[0]) # print '<table border="2"><tr><th>Name</th><th>Number</th></tr>' # for i in games_by_type_list: # print '<tr><td>%s</td><td>%s</td></tr>' % i # print '</table>' print('<ul>') for i in games_by_type_list: print('<li>%s (%s games)</li>' % i) print('</ul>') return
def by_type(): games = GAME_DB.getGamesIdSortedById() games_by_type = {} for id in games: gi = GAME_DB.get(id) if not GAME_BY_TYPE.has_key(gi.si.game_type): print gi.si.game_type continue gt = GAME_BY_TYPE[gi.si.game_type] if games_by_type.has_key(gt): games_by_type[gt] += 1 else: games_by_type[gt] = 1 games_by_type_list = games_by_type.items() games_by_type_list.sort(lambda i, j: cmp(i[0], j[0])) ## print '<table border="2"><tr><th>Name</th><th>Number</th></tr>' ## for i in games_by_type_list: ## print '<tr><td>%s</td><td>%s</td></tr>' % i ## print '</table>' print "<ul>" for i in games_by_type_list: print "<li>%s (%s games)</li>" % i print "</ul>" return
def gen_rules_html(): # ls = glob(os.path.join('rules', '*.html')) rules_ls = os.listdir('rules') rules_ls.sort() wikipedia_ls = os.listdir('wikipedia') wikipedia_ls.sort() games = GAME_DB.getGamesIdSortedByName() rules_list = [] files_list = [] for fn, tt in rules_files: rules_list.append(('rules', fn, tt, '')) files_list.append(fn) for fn, tt in wikipedia_files: rules_list.append(('wikipedia', fn, tt, '')) files_list.append(fn) altnames = [] # open file of list of all rules out_rules = open(os.path.join('html', 'rules.html'), 'w') print >> out_rules, main_header % 'PySol - a Solitaire Game Collection' print >> out_rules, open('rules.html').read() for id in games: # create list of rules gi = GAME_DB.get(id) rules_fn = gi.rules_filename if not rules_fn: rules_fn = getGameRulesFilename(gi.name) if rules_fn in files_list: continue if rules_fn in rules_ls: rules_dir = 'rules' elif rules_fn in wikipedia_ls: rules_dir = 'wikipedia' else: print('missing rules for %s (file: %s)' % (gi.name.encode('utf-8'), rules_fn)) continue # print '>>>', rules_fn title = 'PySol - Rules for ' + gi.name s = '' if gi.si.game_type == GI.GT_HANAFUDA: s = '<a href="../hanafuda.html">General Flower Card rules</a>' elif gi.si.game_type == GI.GT_DASHAVATARA_GANJIFA: s = '<a href="../ganjifa.html">About Ganjifa</a>' elif gi.si.game_type == GI.GT_HEXADECK: s = '<a href="../hexadeck.html">General Hex A Deck rules</a>' elif gi.si.game_type == GI.GT_MUGHAL_GANJIFA: s = '<a href="../ganjifa.html">About Ganjifa</a>' # print '***', gi.name, '***' rules_list.append((rules_dir, rules_fn, title, s)) files_list.append(rules_fn) # rules_list.append((rules_fn, gi.name)) print >> out_rules, '<li><a href="rules/%s">%s</a>' \ % (rules_fn, gi.name.encode('utf-8')) for n in gi.altnames: altnames.append((n, rules_fn)) print >> out_rules, '</ul>\n' + \ main_footer % '<a href="index.html">Back to the index</a>' # create file of altnames out_rules_alt = open(os.path.join('html', 'rules_alternate.html'), 'w') print >> out_rules_alt, main_header % 'PySol - a Solitaire Game Collection' print >> out_rules_alt, open('rules_alternate.html').read() altnames.sort() for name, fn in altnames: print >> out_rules_alt, '<li> <a href="rules/%s">%s</a>' \ % (fn, name.encode('utf-8')) print >> out_rules_alt, '</ul>\n' + \ main_footer % '<a href="index.html">Back to the index</a>' # create rules for dir, filename, title, footer in rules_list: outfile = open(os.path.join('html', 'rules', filename), 'w') if dir == 'rules': print >> outfile, (rules_header % title).encode('utf-8') else: # d == 'wikipedia' print >> outfile, (wikipedia_header % title).encode('utf-8') print >> outfile, open(os.path.join(dir, filename)).read() print >> outfile, rules_footer % footer
def constructGame(self, id): gi = GAME_DB.get(id) if gi is None: raise Exception("Unknown game (id %d)" % id) return gi.gameclass(gi)
def gen_rules_html(): # ls = glob(os.path.join('rules', '*.html')) rules_ls = os.listdir('rules') rules_ls.sort() wikipedia_ls = os.listdir('wikipedia') wikipedia_ls.sort() games = GAME_DB.getGamesIdSortedByName() rules_list = [] files_list = [] for fn, tt in rules_files: rules_list.append(('rules', fn, tt, '')) files_list.append(fn) for fn, tt in wikipedia_files: rules_list.append(('wikipedia', fn, tt, '')) files_list.append(fn) altnames = [] # open file of list of all rules out_rules = open(os.path.join('html', 'rules.html'), 'w') print(_fmt(main_header, {'title': 'PySol - a Solitaire Game Collection'}), file=out_rules) with open('rules.html', 'r') as file: print(file.read(), file=out_rules) for id in games: # create list of rules gi = GAME_DB.get(id) rules_fn = gi.rules_filename if not rules_fn: rules_fn = _get_game_rules_filename(gi.name) if rules_fn in rules_ls: rules_dir = 'rules' elif rules_fn in wikipedia_ls: rules_dir = 'wikipedia' else: print('missing rules for %s (file: %s)' % (gi.name, rules_fn)) continue # print '>>>', rules_fn if rules_fn not in files_list: title = 'PySol - Rules for ' + gi.name s = '' if gi.si.game_type == GI.GT_HANAFUDA: s = '<a href="../hanafuda.html">General Flower Card rules</a>' elif gi.si.game_type == GI.GT_DASHAVATARA_GANJIFA or \ gi.si.game_type == GI.GT_MUGHAL_GANJIFA: s = '<a href="../ganjifa.html">About Ganjifa</a>' elif gi.si.game_type == GI.GT_HEXADECK: s = '<a href="../hexadeck.html">General Hex A Deck rules</a>' rules_list.append((rules_dir, rules_fn, title, s)) files_list.append(rules_fn) # rules_list.append((rules_fn, gi.name)) print('<li><a href="rules/%s">%s</a>' % (rules_fn, gi.name), file=out_rules) for n in gi.altnames: altnames.append((n, rules_fn)) print('</ul>\n' + _fmt( main_footer, {'back_to_index_link': '<a href="index.html">Back to the index</a>'}), file=out_rules) out_rules.close() # create file of altnames out_rules_alt = open(os.path.join('html', 'rules_alternate.html'), 'w') print(_fmt(main_header, {'title': 'PySol - a Solitaire Game Collection'}), file=out_rules_alt) with open('rules_alternate.html', 'r') as file: print(file.read(), file=out_rules_alt) altnames.sort() for name, fn in altnames: print('<li> <a href="rules/%s">%s</a>' % (fn, name), file=out_rules_alt) print('</ul>\n' + _fmt( main_footer, {'back_to_index_link': '<a href="index.html">Back to the index</a>'}), file=out_rules_alt) out_rules_alt.close() # create rules for dir, filename, title, footer in rules_list: outfile = open(os.path.join('html', 'rules', filename), 'w', encoding='utf-8') if dir == 'rules': print(_fmt(rules_header, {'title': title}), file=outfile) else: # d == 'wikipedia' print(_fmt(wikipedia_header, {'title': title}), file=outfile) with open(os.path.join(dir, filename), 'r', encoding='utf-8') as file: print(file.read(), file=outfile) print(_fmt(rules_footer, {'footer': footer}), file=outfile) outfile.close()