From 94a88a1f449dd1b5864bdbf42a2290a9d031f2b6 Mon Sep 17 00:00:00 2001 From: Michael Joseph Date: Sun, 13 Oct 2013 14:46:33 +0200 Subject: [PATCH] Refactor and test remark rendering --- remarkable/cli.py | 41 +++++++++++++++-------------- tests/test_remarkable.py | 56 +++++++++++++++++++++++++++++++++++----- 2 files changed, 72 insertions(+), 25 deletions(-) diff --git a/remarkable/cli.py b/remarkable/cli.py index 6d0c1cb..ed92149 100644 --- a/remarkable/cli.py +++ b/remarkable/cli.py @@ -14,7 +14,6 @@ import logging from docopt import docopt - from jinja2 import Environment, PackageLoader import remarkable @@ -22,27 +21,31 @@ log = logging.getLogger(__name__) -def main(): - arguments = docopt(__doc__, version=remarkable.__version__) - debug = arguments['--debug'] - logging.basicConfig(level=logging.DEBUG if debug else logging.INFO) - log.debug('arguments: %s', arguments) +def render_template(template_name, context): + return Environment( + loader=PackageLoader('remarkable', 'templates') + ).get_template(template_name).render(context) - if arguments['remark']: - file_name = arguments[''] - html_file_name = '%s.html' % file_name - html = render_remark(open(file_name).read()) - with open(html_file_name, 'w') as html_file: - html_file.write(html) - log.info('Created %s' % html_file_name) +def remark(arguments): + file_name = arguments[''] + html_file_name = '%s.html' % file_name + html = render_template( + 'remark.html', + dict(markdown=open(file_name).read()) + ) + with open(html_file_name, 'w') as html_file: + html_file.write(html) + log.info('Created %s' % html_file_name) -def render_remark(markdown): - return render_template('remark.html', markdown=markdown) +def main(): + arguments = docopt(__doc__, version=remarkable.__version__) -def render_template(template_name, context): - return Environment( - loader=PackageLoader('remarkable', 'templates') - ).get_template(template_name).render(context) + logging.basicConfig( + level=logging.DEBUG if arguments['--debug'] else logging.INFO + ) + log.debug('arguments: %s', arguments) + if arguments['remark']: + remark(arguments) diff --git a/tests/test_remarkable.py b/tests/test_remarkable.py index 47fb173..daa3e43 100644 --- a/tests/test_remarkable.py +++ b/tests/test_remarkable.py @@ -1,12 +1,56 @@ +import sys +import os + +from remarkable import cli from . import BaseTestCase -from remarkable import remarkable + +MARKDOWN = """ +name: inverse +layout: true +class: center, middle, inverse +--- +# Application To Platform +.footnote[ + [How we used Python to scale Yola] + (https://github.com/michaeljoseph/application-to-platform) +] +--- +layout: false +background-image: url(https://raw.github.com/michaeljoseph/application-to-platform/gh-pages/images/yola-logo.png) +.large[ +![avatar](https://raw.github.com/michaeljoseph/application-to-platform/gh-pages/images/avatar.png) +michaeljoseph @github @twitter +] +??? +.small[ +# excuses + +- false pretences: backup speaker + +- 4 day talk + +- crappy slides: squirrel (show remark / reveal) + +- we're hiring, let me convince you / swimming the recruitment and hiring manager infested nerdpool during the break +we have business cards +] +--- +""" class TestRemarkable(BaseTestCase): - def test_something(self): - self.assertEquals( - 'Hello World!', - remarkable(), - ) + def setUp(self): + self.example_file = 'atp.md' + with open(self.example_file, 'w') as f: + f.write(MARKDOWN) + + def tearDown(self): + os.remove(self.example_file) + os.remove('%s.html' % self.example_file) + + def test_remark(self): + sys.argv = 'remarkable remark atp.md'.split(' ') + cli.main() + self.assertTrue(os.path.exists('%s.html' % self.example_file))