From db443df0435113323c7e39b254aaf8769d44f6b3 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 22 Nov 2014 18:38:12 +0200 Subject: Add a DraftsDir helper class --- jt | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/jt b/jt index 5390883..757bcd4 100755 --- a/jt +++ b/jt @@ -39,6 +39,19 @@ template = '''\ ''' +class DraftsDirectory(object): + + def __init__(self, dirname): + self.dirname = dirname + + def create_if_missing(self): + if not os.path.exists(self.dirname): + os.mkdir(self.dirname) + + def get_draft_pathname(self, draft_number): + return os.path.join(self.dirname, '%s.mdwn' % draft_number) + + class Command(object): def __init__(self, app): @@ -57,30 +70,26 @@ class NewCommand(Command): self._app.settings.require('source') self._app.settings.require('layout') - drafts_dir = self._app.drafts_dir() - self._create_dir_if_missing(drafts_dir) - name = self._pick_draft_name() - self._create_draft(name, args[0]) - self._app.edit_file(name) + drafts_dir = DraftsDirectory(self._app.drafts_dir()) + drafts_dir.create_if_missing() + pathname = self._pick_draft_pathname(drafts_dir) + self._create_draft(pathname, args[0]) + self._app.edit_file(pathname) - def _create_dir_if_missing(self, dirname): - if not os.path.exists(dirname): - os.mkdir(dirname) - - def _pick_draft_name(self): + def _pick_draft_pathname(self, drafts_dir): for i in range(1000): - name = self._app.draft_name(i) - if not os.path.exists(name): - return name + pathname = drafts_dir.get_draft_pathname(i) + if not os.path.exists(pathname): + return pathname else: raise cliapp.AppException('ERROR: too many existing drafts') - def _create_draft(self, name, title): + def _create_draft(self, pathname, title): values = { 'title': title, 'date': time.strftime('%Y-%m-%d %H:%M') } - with open(name, 'w') as f: + with open(pathname, 'w') as f: f.write(template % values) -- cgit v1.2.1