Move the metadata display table over to being contained in a plugin
[mediagoblin.git] / mediagoblin / tools / metadata.py
index 37d04fa11cb3470de7549a59972b8aff36134bab..3f10e9d12c23b4de6a1aeaaeea98a6e083cb5cb3 100644 (file)
@@ -157,6 +157,25 @@ def load_context(url):
 
 DEFAULT_CONTEXT = "http://www.w3.org/2013/json-ld-context/rdfa11"
 
+def compact_json(metadata, context=DEFAULT_CONTEXT):
+    """
+    Compact json with supplied context.
+
+    Note: Free floating" nodes are removed (eg a key just named
+    "bazzzzzz" which isn't specified in the context... something like
+    bazzzzzz:blerp will stay though.  This is jsonld.compact behavior.
+    """
+    compacted = jsonld.compact(
+        metadata, context,
+        options={
+            "documentLoader": load_context,
+            # This allows for things like "license" and etc to be preserved
+            "expandContext": context,
+            "keepFreeFloatingNodes": False})
+
+    return compacted
+
+
 def compact_and_validate(metadata, context=DEFAULT_CONTEXT,
                          schema=DEFAULT_SCHEMA):
     """
@@ -171,15 +190,29 @@ def compact_and_validate(metadata, context=DEFAULT_CONTEXT,
 
     You may wish to do this validation yourself... this is just for convenience.
     """
-    compacted = jsonld.compact(
-        metadata, context,
-        options={
-            "documentLoader": load_context,
-            # This allows for things like "license" and etc to be preserved
-            "expandContext": context,
-            "keepFreeFloatingNodes": False})
+    compacted = compact_json(metadata, context)
     validate(metadata, schema, format_checker=DEFAULT_CHECKER)
 
     return compacted
 
 
+def expand_json(metadata, context=DEFAULT_CONTEXT):
+    """
+    Expand json, but be sure to use our documentLoader.
+
+    By default this expands with DEFAULT_CONTEXT, but if you do not need this,
+    you can safely set this to None.
+
+    # @@: Is the above a good idea?  Maybe it should be set to None by
+    #   default.
+    """
+    options = {
+        "documentLoader": load_context}
+    if context is not None:
+        options["expandContext"] = context
+    return jsonld.expand(metadata, options=options)
+
+
+def rdfa_to_readable(rdfa_predicate):
+    readable = rdfa_predicate.split(u":")[1].capitalize()
+    return readable