| Index: tools/md_browser/md_browser.py
|
| diff --git a/tools/md_browser/md_browser.py b/tools/md_browser/md_browser.py
|
| deleted file mode 100644
|
| index 7fb51eb2e8e0de5e19298e5016162d99303048db..0000000000000000000000000000000000000000
|
| --- a/tools/md_browser/md_browser.py
|
| +++ /dev/null
|
| @@ -1,102 +0,0 @@
|
| -# Copyright 2015 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -"""Simple Markdown browser for a Git checkout."""
|
| -from __future__ import print_function
|
| -
|
| -import SimpleHTTPServer
|
| -import SocketServer
|
| -import argparse
|
| -import codecs
|
| -import os
|
| -import socket
|
| -import sys
|
| -
|
| -
|
| -THIS_DIR = os.path.abspath(os.path.dirname(__file__))
|
| -SRC_DIR = os.path.dirname(os.path.dirname(THIS_DIR))
|
| -sys.path.append(os.path.join(SRC_DIR, 'third_party', 'Python-Markdown'))
|
| -import markdown
|
| -
|
| -
|
| -def main(argv):
|
| - parser = argparse.ArgumentParser(prog='md_browser')
|
| - parser.add_argument('-p', '--port', type=int, default=8080,
|
| - help='port to run on (default = %(default)s)')
|
| - args = parser.parse_args(argv)
|
| -
|
| - try:
|
| - s = Server(args.port, SRC_DIR)
|
| - print("Listening on http://localhost:%s/" % args.port)
|
| - s.serve_forever()
|
| - s.shutdown()
|
| - return 0
|
| - except KeyboardInterrupt:
|
| - return 130
|
| -
|
| -
|
| -class Server(SocketServer.TCPServer):
|
| - def __init__(self, port, top_level):
|
| - SocketServer.TCPServer.__init__(self, ('0.0.0.0', port), Handler)
|
| - self.port = port
|
| - self.top_level = top_level
|
| -
|
| - def server_bind(self):
|
| - self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
| - self.socket.bind(self.server_address)
|
| -
|
| -
|
| -class Handler(SimpleHTTPServer.SimpleHTTPRequestHandler):
|
| - def do_GET(self):
|
| - full_path = os.path.abspath(os.path.join(self.server.top_level,
|
| - self.path[1:]))
|
| - if not full_path.startswith(SRC_DIR):
|
| - self._DoUnknown()
|
| - elif self.path == '/doc.css':
|
| - self._WriteTemplate('doc.css')
|
| - elif not os.path.exists(full_path):
|
| - self._DoNotFound()
|
| - elif self.path.lower().endswith('.md'):
|
| - self._DoMD()
|
| - else:
|
| - self._DoUnknown()
|
| -
|
| - def _DoMD(self):
|
| - extensions = [
|
| - 'markdown.extensions.fenced_code',
|
| - 'markdown.extensions.tables',
|
| - 'markdown.extensions.toc',
|
| - ]
|
| -
|
| - contents = self._Read(self.path[1:])
|
| - md_fragment = markdown.markdown(contents,
|
| - extensions=extensions,
|
| - output_format='html4').encode('utf-8')
|
| - try:
|
| - self._WriteTemplate('header.html')
|
| - self.wfile.write(md_fragment)
|
| - self._WriteTemplate('footer.html')
|
| - except:
|
| - raise
|
| -
|
| - def _DoNotFound(self):
|
| - self.wfile.write('<html><body>%s not found</body></html>' % self.path)
|
| -
|
| - def _DoUnknown(self):
|
| - self.wfile.write('<html><body>I do not know how to serve %s.</body>'
|
| - '</html>' % self.path)
|
| -
|
| - def _Read(self, relpath):
|
| - assert not relpath.startswith(os.sep)
|
| - path = os.path.join(self.server.top_level, relpath)
|
| - with codecs.open(path, encoding='utf-8') as fp:
|
| - return fp.read()
|
| -
|
| - def _WriteTemplate(self, template):
|
| - contents = self._Read(os.path.join('tools', 'md_browser', template))
|
| - self.wfile.write(contents.encode('utf-8'))
|
| -
|
| -
|
| -if __name__ == '__main__':
|
| - sys.exit(main(sys.argv[1:]))
|
|
|