diff options
| author | Scott Bahling <sbahling@mudgum.net> | 2013-03-20 10:56:48 +0100 |
|---|---|---|
| committer | Scott Bahling <sbahling@mudgum.net> | 2013-03-20 10:56:48 +0100 |
| commit | f2fb7c8dea7c381b803e9ca8d6616907285e92f9 (patch) | |
| tree | 3da57962a6e8d2dc85ef85470535e9ac0d22ef1e | |
| parent | 6008dfc91c6361980cc855b4b3adc2ccedb25e5c (diff) | |
| download | panfry-f2fb7c8dea7c381b803e9ca8d6616907285e92f9.tar.gz panfry-f2fb7c8dea7c381b803e9ca8d6616907285e92f9.tar.xz panfry-f2fb7c8dea7c381b803e9ca8d6616907285e92f9.zip | |
Add epub generation
Default to xelatex latex engine for pdf generation to
handle utf-8 properly.
| -rwxr-xr-x | panfry/document.py | 35 | ||||
| -rwxr-xr-x | panfry/main.py | 4 | ||||
| -rwxr-xr-x | panfry/templater.py | 1 |
3 files changed, 37 insertions, 3 deletions
diff --git a/panfry/document.py b/panfry/document.py index 0013254..969d5f4 100755 --- a/panfry/document.py +++ b/panfry/document.py @@ -64,7 +64,12 @@ class Document: @property def title(self): if self.header.firstline.startswith('%'): - return self.header.firstline.split('%')[1].strip() + title = self.header.firstline.split('%')[1].strip() + for line in self.header.lines[1:]: + if line.startswith('%'): + break + title = '%s %s' % (title, line.strip()) + return title else: return pages[0].title @@ -140,7 +145,7 @@ class Document: return links @property - def pdf_filename(self): + def filename_base(self): filename = self.title filename = re.sub(r'\s+', ' ', filename) filename = re.sub(r'[\n ]', '_', filename) @@ -149,7 +154,15 @@ class Document: filename = re.sub(r'-_', '-', filename) filename = re.sub(r'-+', '-', filename) - return filename + '.pdf' + return filename + + @property + def pdf_filename(self): + return self.filename_base + '.pdf' + + @property + def epub_filename(self): + return self.filename_base + '.epub' def publish_pdf(self, pub_path): pdf_path = os.path.join(pub_path, self.pdf_filename) @@ -161,11 +174,27 @@ class Document: doc.markdown = src pandoc.set_cwd(os.path.abspath(self.src_path)) + doc.add_argument('latex-engine=xelatex') doc.to_file(pdf_path) pandoc.set_cwd(None) return self.pdf_filename + def publish_epub(self, pub_path): + epub_path = os.path.join(pub_path, self.epub_filename) + src = self.header.source + for page in self.pages: + src += '\n%s' % page.source + + doc = pandoc.Document() + doc.markdown = src + + pandoc.set_cwd(os.path.abspath(self.src_path)) + doc.to_file(epub_path) + pandoc.set_cwd(None) + + return self.epub_filename + def publish_css(self, pub_path): src = os.path.join(self.src_path, 'css') dst = os.path.join(pub_path, 'css') diff --git a/panfry/main.py b/panfry/main.py index 776fd52..e09b653 100755 --- a/panfry/main.py +++ b/panfry/main.py @@ -40,6 +40,10 @@ def main(): pdffile = document.publish_pdf(env.pub_path) print("Wrote PDF: %s" % pdffile) + ###### Create epub + epubfile = document.publish_epub(env.pub_path) + print("Wrote PDF: %s" % epubfile) + ###### Create HTML document.publish_html(env.pub_path) diff --git a/panfry/templater.py b/panfry/templater.py index c420a12..40fc17a 100755 --- a/panfry/templater.py +++ b/panfry/templater.py @@ -30,6 +30,7 @@ class Templater: options = dict(toc=doc.toc_links) options['page'] = unicode(page.htmlfile, "utf8") options['pdf'] = unicode(doc.pdf_filename) + options['epub'] = unicode(doc.epub_filename) options['prev'] = u'' options['next'] = u'' prevpage = doc.prev_page(page) |
