summaryrefslogtreecommitdiff
path: root/panfry/document.py
diff options
context:
space:
mode:
authorScott Bahling <sbahling@mudgum.net>2013-03-20 10:56:48 +0100
committerScott Bahling <sbahling@mudgum.net>2013-03-20 10:56:48 +0100
commitf2fb7c8dea7c381b803e9ca8d6616907285e92f9 (patch)
tree3da57962a6e8d2dc85ef85470535e9ac0d22ef1e /panfry/document.py
parent6008dfc91c6361980cc855b4b3adc2ccedb25e5c (diff)
downloadpanfry-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-xpanfry/document.py35
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')