diff --git a/lib/cheat_wrapper.py b/lib/cheat_wrapper.py index 606f351..fdcaff6 100644 --- a/lib/cheat_wrapper.py +++ b/lib/cheat_wrapper.py @@ -26,25 +26,10 @@ def _add_section_name(query): if '/' in query: return query if ' ' in query: - delim = " " - elif '+' in query: - delim = "+" - - index = 0 - length = len(query) - while index != length: - - index = query.index(delim, index) + 1 - - try: - comparison = query.index(delim, index) - except ValueError: - comparison = -1 - - if (index != comparison and index != length): - return "%s/%s" % (query[:index-1], query[index:]) - - return query + return re.sub(r' +', '/', query, count=1) + if '+' in query: + # replace only single + to avoid catching g++ and friends + return re.sub(r'([^\+])\+([^\+])', r'\1/\2', query, count=1) def cheat_wrapper(query, request_options=None, output_format='ansi'): """ @@ -53,7 +38,6 @@ def cheat_wrapper(query, request_options=None, output_format='ansi'): Additional request options specified in `request_options`. """ - def _rewrite_aliases(word): if word == ':bash.completion': return ':bash_completion' diff --git a/lib/cheat_wrapper_test.py b/lib/cheat_wrapper_test.py index 5533edc..72449ab 100644 --- a/lib/cheat_wrapper_test.py +++ b/lib/cheat_wrapper_test.py @@ -13,12 +13,19 @@ btrfs~volume python/copy+file python/rosetta/:list emacs:go-mode/:list +g++g++ """ split = """ python copy file python/copy file +python file +python/file + +python+file +python/file + g++ -O1 g++/-O1 """ diff --git a/tests/README.md b/tests/README.md new file mode 100644 index 0000000..fe1e2db --- /dev/null +++ b/tests/README.md @@ -0,0 +1,7 @@ +To run unit tests. + + python3 -m pytest -v ../lib/ + +To run input/output tests. + + ./run-tests.sh diff --git a/tests/run-tests.sh b/tests/run-tests.sh old mode 100644 new mode 100755