#!/usr/bin/env python from pandocfilters import * import json import sys def appendHeader(v): global newtext text = v['c'][2] level = v['c'][0] thisLevel = newtext['c'][1] for i in range(1,level): previousList = thisLevel thisLevel = previousList typeofLast = thisLevel[-1][-1]['t'] if typeofLast=="Plain": previousList[-1].append(newList()) thisLevel = previousList[-1][-1]['c'][1] else: thisLevel = previousList[-1][-1]['c'][1] thisLevel.append([Plain(text)]) def query(k, v, f, meta): global lines global newtext thisLevel = newtext if k == 'Strong': while True: #sys.stderr.write(json.dumps(thisLevel['c'][1])) lastType = thisLevel['c'][1][-1][-1]['t'] if lastType=="Plain": thisLevel['c'][1][-1].append(Plain([LineBreak(),Emph(v)])) break elif lastType=="OrderedList": thisLevel = thisLevel['c'][1][-1][-1] else: sys.stderr.write(lastType) raise #lines.append(Para(v)) def newList(): """ The germ of an ordered list. """ return {"c":[[1,{"t":"DefaultStyle","c":[]},{"t":"DefaultDelim","c":[]}],[]],"t":"OrderedList"} def bolded(v): global lines global meta lines = [] walk(v['c'],query,v['t'],meta) return lines if __name__ == "__main__": global meta global newtext document = json.load(sys.stdin) meta = document[0] text = document[1] newtext = newList() level = 0 for item in text: if item['t']=="Header": appendHeader(item) else: for term in bolded(item): pass document[1] = [newtext] print json.dumps(document)