Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(399)

Side by Side Diff: tools/md_browser/md_browser.py

Issue 1615733003: md_browser.py prints example URL & implicitly displays README.md files. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2015 The Chromium Authors. All rights reserved. 1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Simple Markdown browser for a Git checkout.""" 5 """Simple Markdown browser for a Git checkout."""
6 from __future__ import print_function 6 from __future__ import print_function
7 7
8 import SimpleHTTPServer 8 import SimpleHTTPServer
9 import SocketServer 9 import SocketServer
10 import argparse 10 import argparse
(...skipping 12 matching lines...) Expand all
23 23
24 def main(argv): 24 def main(argv):
25 parser = argparse.ArgumentParser(prog='md_browser') 25 parser = argparse.ArgumentParser(prog='md_browser')
26 parser.add_argument('-p', '--port', type=int, default=8080, 26 parser.add_argument('-p', '--port', type=int, default=8080,
27 help='port to run on (default = %(default)s)') 27 help='port to run on (default = %(default)s)')
28 args = parser.parse_args(argv) 28 args = parser.parse_args(argv)
29 29
30 try: 30 try:
31 s = Server(args.port, SRC_DIR) 31 s = Server(args.port, SRC_DIR)
32 print("Listening on http://localhost:%s/" % args.port) 32 print("Listening on http://localhost:%s/" % args.port)
33 print(" Try loading http://localhost:%s/docs/README.md" % args.port)
33 s.serve_forever() 34 s.serve_forever()
34 s.shutdown() 35 s.shutdown()
35 return 0 36 return 0
36 except KeyboardInterrupt: 37 except KeyboardInterrupt:
37 return 130 38 return 130
38 39
39 40
40 def _gitiles_slugify(value, _separator): 41 def _gitiles_slugify(value, _separator):
41 """Convert a string (representing a section title) to URL anchor name. 42 """Convert a string (representing a section title) to URL anchor name.
42 43
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 full_path = os.path.abspath(os.path.join(self.server.top_level, path[1:])) 90 full_path = os.path.abspath(os.path.join(self.server.top_level, path[1:]))
90 91
91 if not full_path.startswith(SRC_DIR): 92 if not full_path.startswith(SRC_DIR):
92 self._DoUnknown() 93 self._DoUnknown()
93 elif path == '/doc.css': 94 elif path == '/doc.css':
94 self._WriteTemplate('doc.css') 95 self._WriteTemplate('doc.css')
95 elif not os.path.exists(full_path): 96 elif not os.path.exists(full_path):
96 self._DoNotFound() 97 self._DoNotFound()
97 elif path.lower().endswith('.md'): 98 elif path.lower().endswith('.md'):
98 self._DoMD(path) 99 self._DoMD(path)
100 elif os.path.exists(full_path + '/README.md'):
101 self._DoMD(path + '/README.md')
99 else: 102 else:
100 self._DoUnknown() 103 self._DoUnknown()
101 104
102 def _DoMD(self, path): 105 def _DoMD(self, path):
103 extensions = [ 106 extensions = [
104 'markdown.extensions.def_list', 107 'markdown.extensions.def_list',
105 'markdown.extensions.fenced_code', 108 'markdown.extensions.fenced_code',
106 'markdown.extensions.tables', 109 'markdown.extensions.tables',
107 'markdown.extensions.toc', 110 'markdown.extensions.toc',
108 'gitiles_ext_blocks', 111 'gitiles_ext_blocks',
(...skipping 29 matching lines...) Expand all
138 with codecs.open(path, encoding='utf-8') as fp: 141 with codecs.open(path, encoding='utf-8') as fp:
139 return fp.read() 142 return fp.read()
140 143
141 def _WriteTemplate(self, template): 144 def _WriteTemplate(self, template):
142 contents = self._Read(os.path.join('tools', 'md_browser', template)) 145 contents = self._Read(os.path.join('tools', 'md_browser', template))
143 self.wfile.write(contents.encode('utf-8')) 146 self.wfile.write(contents.encode('utf-8'))
144 147
145 148
146 if __name__ == '__main__': 149 if __name__ == '__main__':
147 sys.exit(main(sys.argv[1:])) 150 sys.exit(main(sys.argv[1:]))
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698