Splitting up compact_json from compact_and_validate
authorChristopher Allan Webber <cwebber@dustycloud.org>
Fri, 9 May 2014 22:33:58 +0000 (17:33 -0500)
committerChristopher Allan Webber <cwebber@dustycloud.org>
Fri, 9 May 2014 22:34:11 +0000 (17:34 -0500)
This commit sponsored by Harry Rogoff.  Thank you!

mediagoblin/tools/metadata.py

index dde5753efec61ac94c5cfc985d5211f4877858a2..7de5a51423d92068f2f700989b2dfb47ac2ff5a3 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,13 +190,7 @@ 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