1111import re
1212import json
1313
14- from get_answer import get_answer , find_answer_by_keyword , get_topics_list
14+ from routing import get_answer_dict , get_topics_list
15+ from search import find_answers_by_keyword
16+ from languages_data import LANGUAGE_ALIAS , rewrite_editor_section_name
17+ import postprocessing
18+
1519import frontend .html
1620import frontend .ansi
1721
@@ -22,6 +26,28 @@ def cheat_wrapper(query, request_options=None, output_format='ansi'):
2226 Additional request options specified in `request_options`.
2327 """
2428
29+ def _rewrite_aliases (word ):
30+ if word == ':bash.completion' :
31+ return ':bash_completion'
32+ return word
33+
34+ def _rewrite_section_name (query ):
35+ """
36+ Rewriting special section names:
37+ * EDITOR:NAME => emacs:go-mode
38+ """
39+
40+ if '/' not in query :
41+ return query
42+
43+ section_name , rest = query .split ('/' , 1 )
44+
45+ if ':' in section_name :
46+ section_name = rewrite_editor_section_name (section_name )
47+ section_name = LANGUAGE_ALIAS .get (section_name , section_name )
48+
49+ return "%s/%s" % (section_name , rest )
50+
2551 def _sanitize_query (query ):
2652 return re .sub ('[<>"]' , '' , query )
2753
@@ -48,17 +74,26 @@ def _parse_query(query):
4874 return topic , keyword , search_options
4975
5076 query = _sanitize_query (query )
77+ query = _rewrite_aliases (query )
78+ query = _rewrite_section_name (query )
79+
5180
5281 # at the moment, we just remove trailing slashes
5382 # so queries python/ and python are equal
5483 query = _strip_hyperlink (query .rstrip ('/' ))
5584 topic , keyword , search_options = _parse_query (query )
5685
5786 if keyword :
58- answers = find_answer_by_keyword (
87+ answers = find_answers_by_keyword (
5988 topic , keyword , options = search_options , request_options = request_options )
6089 else :
61- answers = [get_answer (topic , keyword , request_options = request_options )]
90+ answers = [get_answer_dict (topic , request_options = request_options )]
91+
92+ answers = [
93+ postprocessing .postprocess (
94+ answer , keyword , search_options , request_options = request_options )
95+ for answer in answers
96+ ]
6297
6398 answer_data = {
6499 'query' : query ,
0 commit comments