James Tocknell avatar James Tocknell committed abd3704

Addded attributions handler

Comments (0)

Files changed (2)

shinypress/handlers/__init__.py

-from shinypress.handlers import text, lyrics, pdf, images, hacks
+from shinypress.handlers import text, lyrics, pdf, images, hacks, attribute
 
 handlers = dict(
     text=text.render,
     pdf=pdf.render,
     images=images.render,
     image=images.render_single,
+    attributions=attribute.render,
 
     background=hacks.background,
 )

shinypress/handlers/attribute.py

+
+# -*- coding: utf-8 -*-
+
+from shinypress.jinja import env
+import codecs
+
+template = env.from_string(u"""
+\\begin{frame}
+\\footnotesize
+%% for attrib in attributions %%
+“< attrib.title >”
+(\\url{< attrib.author >})
+< attrib.licence >
+%% endfor %%
+\\vfill\\vfill\\vfill\\vfill
+
+\\end{frame}
+""")
+
+licence_str = {"CC BY 2.0 (http://creativecommons.org/licenses/by/2.0/)": "Creative Commons Attribution 2.0",
+    "CC BY-NC-SA 2.0 (http://creativecommons.org/licenses/by-nc-sa/2.0/)": u"Creative Commons Attribution–NonCommercial–ShareAlike 2.0",
+    }
+
+def split_attribution(text):
+    """Splits attribution generated from http://openattribute.com"""
+    attr = {}
+    author_licence_split_str = " / "
+    title_author_split_str = "(http"
+
+    title_author, first_split , licence = text.partition(author_licence_split_str)
+    title, second_split, author = title_author.partition(title_author_split_str)
+
+    attr['licence'] = licence_str[licence.strip()]
+    attr['title'] = title.strip()
+    attr['author'] = (second_split + author).strip()[1:-2] # removes parens
+
+    return attr
+
+def render(filename):
+    source = codecs.open(filename, 'rU', 'utf-8')
+    formatted_source = (split_attribution(line) for line in source)
+    return (template.render(attributions=formatted_source), [])
+
+
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.