diff --git a/bin/cheat b/bin/cheat index cc172d0..60bad56 100755 --- a/bin/cheat +++ b/bin/cheat @@ -38,7 +38,7 @@ from docopt import docopt if __name__ == '__main__': # parse the command-line options - options = docopt(__doc__, version='cheat 2.0.3') + options = docopt(__doc__, version='cheat 2.0.4') # list directories if options['--directories']: diff --git a/cheat/sheets.py b/cheat/sheets.py index c4da657..10dbfaf 100644 --- a/cheat/sheets.py +++ b/cheat/sheets.py @@ -2,6 +2,12 @@ from cheat import cheatsheets from cheat.utils import * import os +# @kludge: it breaks the functional paradigm to a degree, but declaring this +# var here (versus within get()) gives us a "poor man's" memoization on the +# call to get(). This, in turn, spares us from having to call out to the +# filesystem more than once. +cheats = {} + def default_path(): """ Returns the default cheatsheet path """ @@ -35,10 +41,15 @@ def default_path(): return default_sheets_dir -# @todo: memoize result def get(): """ Assembles a dictionary of cheatsheets as name => file-path """ - cheats = {} + + # if we've already reached out to the filesystem, just return the result + # from memory + if cheats: + return cheats + + # otherwise, scan the filesystem for cheat_dir in reversed(paths()): cheats.update( dict([ diff --git a/setup.py b/setup.py index 711969e..ef8eb69 100644 --- a/setup.py +++ b/setup.py @@ -12,7 +12,7 @@ if os.name == 'nt': setup( name = 'cheat', - version = '2.0.3', + version = '2.0.4', author = 'Chris Lane', author_email = 'chris@chris-allen-lane.com', license = 'GPL3',