- Extracted `Colorize` class out of `Util` class. (The latter now only
contains static methods.)
- Renamed methods in `Colorize` class for improved clarity.
- Refactored as necessary to accommodate the changes above.
Performed a general refactoring, focusing on the following:
- Removing layers of abstraction in config handling
- Stubbing out proper config validator
- Updating envvar names located throughout the project
Constructors of classes which need direct access to configuration
now take Config class instance as parameter which will give them
better maintainability in the future
CHEAT_HIGHLIGHT has been added to Configuration class
Implemnted an assertion that `CHEAT_HIGHLIGHT` (if set) contains a value
that is acceptible to `termcolors`. This happens only once, upon the
invokation of `__main__`. If the assertion fails, `cheat` terminates
with an exit code of `1`.
- When using GFM code fences, strip the last line in addition to the
first
- Updated `README.md` to mention the new feature
- `minor` version-bump to `2.2.0`.
pypi responded with an HTTP 500 when uploading the last version of
`cheat`, and this seems to have caused some problems. No changes were
made in this commit other than incrementing the version number in an
attempt to resolve this.
This allows a fine-grained control of the dependencies, because it generates a wrapper script
that calls the specifiend function (i.e., main inside cheat/app.py)
The `setup.py` script no longer attempts to install files to privileged
system directories. (Previously, it attempted to do this in order to
enable command-line autocompletion.) In lieu of doing this within the
installer directly, I have simply included brief instructions explaining
how to configure this manually.
Version bumped accordingly.
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.
Performed an extensive refactoring on the entire application for the
sake of code-cleanliness.
- Refactored out of an ad-hoc Imperative paradigm into more of a
functional/declarative paradigm. IMO, this makes the application
signifcantly easier to understand.
- Moved away from `argparse` and into `docopt` for argument parsing
- Version bump to 2.0.0
- Performed extensive refactoring on the setup.py script. Script should
install to the system more cleanly now.
- Made minor formatting changes to the --list flag output
- Updated the README
Squashed commit of the following:
commit e5681bd536aa0220cdeb7884cc248db55be408c9
Author: Chris Lane <chris@chris-allen-lane.com>
Date: Sat Apr 26 23:30:21 2014 -0400
Fixed many bugs
Everything seems to work now, I think.
commit 764ec5950cee958eb1b8333ddfcb6bcd45c28429
Author: Chris Lane <chris@chris-allen-lane.com>
Date: Sat Apr 26 21:51:31 2014 -0400
Restructuring for the sake of setup.py
Seem to finally have a working install script
commit 5a866c23857b77ec65070dd8023cd734f2b7c242
Author: Chris Lane <chris@chris-allen-lane.com>
Date: Sat Apr 26 18:01:11 2014 -0400
Nits
commit a79954ba5b33d992fa6a32abffb33b161d624e3d
Author: Chris Lane <chris@chris-allen-lane.com>
Date: Sat Apr 26 17:53:03 2014 -0400
Implemented search
commit b570a897e9a12c15affe1a72628deae31836dee2
Author: Chris Lane <chris@chris-allen-lane.com>
Date: Sat Apr 26 17:11:27 2014 -0400
Nits
commit 1a8d85b44457f1b2131b3e8475c5270b5d0899e3
Author: Chris Lane <chris@chris-allen-lane.com>
Date: Sat Apr 26 17:02:22 2014 -0400
Still refactoring across files
Trying to make the program structure clearer
commit 34dffd6462e492e81ea558e2009a71051b7663c9
Author: Chris Lane <chris@chris-allen-lane.com>
Date: Sat Apr 26 16:40:37 2014 -0400
Breaking app into several files
This is for the sake of code-cleanliness
commit 4825d678ff5f9817ccbf727ef71e5dea15ff2586
Author: Chris Lane <chris@chris-allen-lane.com>
Date: Sat Apr 26 15:55:19 2014 -0400
Got syntax highlighting working
commit c37d7a626d451bfca3d4a072eb9fed604085170f
Author: Chris Lane <chris@chris-allen-lane.com>
Date: Sat Apr 26 15:29:22 2014 -0400
Reduced verbosity of function names
commit 8e626045186b37dce2480f5af1994ddfa8db79b5
Author: Chris Lane <chris@chris-allen-lane.com>
Date: Sat Apr 26 15:24:41 2014 -0400
Refactored argument passing
Fewer arguments now need to be passed throughout the app.
commit 807ba814650010b3dd1b59d27400b3fb4fcfede7
Author: Chris Lane <chris@chris-allen-lane.com>
Date: Sat Apr 26 11:40:05 2014 -0400
Working through the refactor
commit e34e6540d4f8cd727e98aac68289d515a02d5fe6
Author: Chris Lane <chris@chris-allen-lane.com>
Date: Thu Apr 24 20:00:10 2014 -0400
Got a basic end-to-end refactor working
Have re-implemented just the most basic functionality in the "cheat2"
file.