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 /panfry/document.py | |
| 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.
Diffstat (limited to 'panfry/document.py')
| -rwxr-xr-x | panfry/document.py | 35 |
1 files changed, 32 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') |
