Skip to content

Commit

Permalink
fixes #7
Browse files Browse the repository at this point in the history
  • Loading branch information
balmas committed Dec 1, 2015
1 parent a685ea2 commit b48533b
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 4 deletions.
6 changes: 6 additions & 0 deletions examples/tei.pb.min.css
Expand Up @@ -1856,3 +1856,9 @@ div.facsImage img:first-child {
font-family: Arvo, sans-serif;
font-weight: normal;
}

/** Nemo extension **/
.ctsurn {
font-size: smaller;
text-align: right;
}
33 changes: 32 additions & 1 deletion flask_nemo/__init__.py
Expand Up @@ -92,7 +92,7 @@ class Nemo(object):

def __init__(self, name=None, app=None, api_url="/", base_url="/nemo", cache=None, expire=3600,
template_folder=None, static_folder=None, static_url_path=None,
urls=None, inventory=None, transform=None, chunker=None, prevnext=None,
urls=None, inventory=None, transform=None, urntransform=None, chunker=None, prevnext=None,
css=None, js=None, templates=None, statics=None):
__doc__ = Nemo.__doc__
self.name = __name__
Expand Down Expand Up @@ -147,9 +147,17 @@ def __init__(self, name=None, app=None, api_url="/", base_url="/nemo", cache=Non
"default" : None
}

self.__urntransform = {
"default" : None
}

if isinstance(transform, dict):
self.__transform.update(transform)

if isinstance(urntransform, dict):
self.__urntransform.update(urntransform)


self.chunker = {}
self.chunker["default"] = Nemo.default_chunker
if isinstance(chunker, dict):
Expand Down Expand Up @@ -237,6 +245,27 @@ def transform(self, work, xml):
elif func is None:
return etree.tostring(xml, encoding=str)

def transform_urn(self, urn):
""" Transform urn according to configurable function
:param urn: URN to transform
:type URN
:return: String representation of transformed urn
:rtype: str
"""
# We check first that we don't have
if str(urn) in self.__urntransform:
func = self.__urntransform[str(urn)]
else:
func = self.__urntransform["default"]

# If we have a function, it means we return the result of the function
if isinstance(func, Callable):
return func(str(urn))
# If we have None, it meants we just give back the urn as string
elif func is None:
return str(urn)

def get_inventory(self):
""" Request the api endpoint to retrieve information about the inventory
Expand Down Expand Up @@ -494,10 +523,12 @@ def r_passage(self, collection, textgroup, work, version, passage_identifier):

passage = self.transform(edition, text.xml)
prev, next = self.getprevnext(text, Nemo.prevnext_callback_generator(text))
urn = self.transform_urn(text.urn)
return {
"template": self.templates["text"],
"version": edition,
"text_passage": Markup(passage),
"urn" : Markup(urn),
"prev": prev,
"next": next
}
Expand Down
4 changes: 2 additions & 2 deletions flask_nemo/data/templates/text.html
Expand Up @@ -25,7 +25,7 @@ <h2>{{version.parents[1].metadata["groupname"][lang]}}</h2>
{{ text_passage }}
</section>
<footer>

<div class="ctsurn">{{ urn }}</div>
</footer>
</article>
{% endblock %}
{% endblock %}
20 changes: 19 additions & 1 deletion test_flask_nemo.py
Expand Up @@ -730,6 +730,23 @@ def urn(text, cb):
)
self.assertEqual(chunked, [("1.pr", "I PR")])

def test_urntransform_default_function(self):
""" Test that the transform default is called and applied
"""
def default(urn):
self.assertEqual(str(urn), "urn:cts:phi1294.phi002.perseus-lat2:1.pr")
return str(urn)

nemo = Nemo(urntransform={
"default": default
})
transformed = nemo.transform_urn(
MyCapytain.resources.inventory.Text(
urn="urn:cts:phi1294.phi002.perseus-lat2:1.pr"
).urn
)
self.assertEqual(transformed, "urn:cts:phi1294.phi002.perseus-lat2:1.pr")

def test_transform_default_xslt(self):
""" Test that the transform default is called and applied
"""
Expand Down Expand Up @@ -887,4 +904,5 @@ def test_scheme_chunker(self):
self.assertEqual(Nemo.scheme_chunker(
self.inventory["urn:cts:latinLit:phi0959.phi007.perseus-lat2"],
self.make_get_reff(2)
), True)
), True)

0 comments on commit b48533b

Please sign in to comment.