Some minor modification (open inside the generator for better readability) + one bug fixe (the last block wasnt yiel by the generator)

This commit is contained in:
0rax 2013-11-07 00:34:37 +01:00
parent d85fab763b
commit 69428a7279
1 changed files with 20 additions and 17 deletions

37
cheat
View File

@ -179,26 +179,29 @@ class CheatSheets(object):
return ('\n'.join(sorted(['%s [%s]' % (key.ljust(max_command), value) return ('\n'.join(sorted(['%s [%s]' % (key.ljust(max_command), value)
for key, value in self.sheets.items()]))) for key, value in self.sheets.items()])))
def __parse_cheat_command_block(self, cheat_fp): def __parse_cheat_command_block(self, cheat):
"""Parse text blocks inside specified sheet file"""
block = "" block = ""
for line in cheat_fp.readlines(): path = os.path.join(self.sheets[cheat], cheat)
if line == '\n' or line == '': with open(path) as fp:
yield block for line in fp.readlines():
block = "" if line == '\n':
else: yield block
block += line block = ""
else:
block += line
yield block
def search(self, term): def search(self, term):
for sheet, sheet_dir in self.sheets.iteritems(): """Search for a term in sheetcheats"""
path = os.path.join(sheet_dir, sheet) for cheat in self.sheets.keys():
with open(path) as f: output = ''
output = '' for block in self.__parse_cheat_command_block(cheat):
for block in self.__parse_cheat_command_block(f): if term in block:
if term in block: if not output:
if not output: output = cheat + ":\n"
output = sheet + ":\n" output += ''.join([" " + line + '\n' for line
output += ''.join([" " + line + '\n' for line in block.split('\n')])
in block.split('\n')])
if output: if output:
print output, print output,