mirror of
https://github.com/Erreur32/cheat.git
synced 2024-12-22 13:42:11 +01:00
Improved filesystem efficiency
Previously, `sheets.print()` would query the filesystem every time it was invoked. This was inelegant, because it is called multiple times every time `cheat` is executed. Thus, unnecessary calls were being made out to the filesystem. Now the result of that function is being buffered into a module variable when it is executed the first time, and served from there thereafter. I broke the "functional" paradigm to a degree by doing this, but it wasn't worth the complexity of implementing proper memoization (decorators, etc) for such a trivial case. Bumped the version number accordingly.
This commit is contained in:
parent
f128167311
commit
afcaaafbe5
3 changed files with 15 additions and 4 deletions
|
@ -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']:
|
||||
|
|
|
@ -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([
|
||||
|
|
2
setup.py
2
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',
|
||||
|
|
Loading…
Reference in a new issue