@@ -0,0 +1,49 @@
4+def walk(x, action, format = ""):
5+ if isinstance(x, list):
8+ if isinstance(item, dict):
10+ res = action(k, item[k], format)
12+ array.append(walk(item, action, format))
13+ elif isinstance(res, list):
15+ array.append(walk(z, action, format))
17+ array.append(walk(res, action, format))
19+ array.append(walk(item, action, format))
21+ elif isinstance(x, dict):
24+ obj[k] = walk(x[k], action, format)
29+def toJSONFilter(action):
30+ doc = json.loads(sys.stdin.read())
31+ if len(sys.argv) > 1:
35+ altered = walk(doc, action, format)
36+ json.dump(altered, sys.stdout)
38+def rawInline(format, s):
39+ return {"RawInline": [{"unFormat": format}, s]}
41+def rawBlock(format, s):
42+ return {"RawBlock": [{"unFormat": format}, s]}
44+def attributes(attrs):
46+ ident = attrs["id"] or ""
47+ classes = attrs["classes"] or []
48+ keyvals = [x for x in attrs and x != "classes" and x != "id"]
49+ return [ident, classes, keyvals]