summaryrefslogtreecommitdiff
path: root/panfry
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
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')
-rwxr-xr-xpanfry/document.py35
-rwxr-xr-xpanfry/main.py4
-rwxr-xr-xpanfry/templater.py1
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)