| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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:])) |
| OLD | NEW |