shinypress / 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 | latexify >”
(\\url{< attrib.author | latexify >})
< 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",
    "CC BY-SA 2.0 (http://creativecommons.org/licenses/by-sa/2.0/)": u"Creative Commons Attribution—ShareAlike 2.0 Generic"
    }

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.