Example #1
0
def show(
    markdown_file: Path,
    host: str = 'localhost',
    port: int = 8123,
    no_warmup: bool = False,
):
    """
    Visualize your presentation (default).
    """
    markdown_file = Path(markdown_file)
    config = load_config()

    # Initial generation
    generate(markdown_file, no_warmup=no_warmup)

    observer = Observer()
    url = 'http://{host}:{port}'.format(host=host, port=port)
    reload_url = url + '/forcereload'
    ignore_regexes = [r'.*/\.[^/]*']
    handler = Handler(regexes=['.*'],
                      ignore_regexes=ignore_regexes,
                      ignore_directories=True)
    handler.configure(markdown_file, reload_url)
    observer.schedule(handler, '.', recursive=True)
    observer.start()

    server = Server()
    server.root = str(config['output_path'])
    server.application(port, host, liveport=None, debug=True, live_css=True)
    threading.Thread(target=webbrowser.open, args=(url, )).start()
    add_reload_hook(lambda: IOLoop.instance().close(all_fds=True))
    IOLoop.instance().start()