Separate the general from the WL-specific: PDF
[librarian.git] / librarian / functions.py
index e5023b3..9490cbb 100644 (file)
@@ -14,7 +14,7 @@ def _register_function(f):
     ns[f.__name__] = f
 
 
-def reg_substitute_entities(): 
+def reg_substitute_entities():
     ENTITY_SUBSTITUTIONS = [
         (u'---', u'—'),
         (u'--', u'–'),
@@ -91,8 +91,7 @@ def reg_person_name():
         """ Converts "Name, Forename" to "Forename Name" """
         if isinstance(text, list):
             text = ''.join(text)
-        p = Person.from_text(text)
-        return ' '.join(p.first_names + (p.last_name,))
+        return Person.from_text(text).readable()
     _register_function(person_name)
 
 
@@ -105,3 +104,17 @@ def reg_texcommand():
     _register_function(texcommand)
 
 
+def reg_get(format_):
+    def get(context, *args):
+        obj = format_
+        for arg in args:
+            if hasattr(obj, arg):
+                obj = getattr(obj, arg)
+            else:
+                try:
+                    obj = obj[arg]
+                except (TypeError, KeyError), e:
+                    # Just raise proper AttributeError.
+                    getattr(obj, arg)
+        return obj
+    _register_function(get)