You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
832 B
Python
32 lines
832 B
Python
from __future__ import print_function
|
|
from html5lib import parse
|
|
import sys, json
|
|
from xml.etree import ElementTree as ET
|
|
|
|
|
|
def process (f):
|
|
stack = []
|
|
for line in f:
|
|
line = line.rstrip()
|
|
if line:
|
|
level = 0
|
|
while line.startswith("\t"):
|
|
line = line[1:]
|
|
level += 1
|
|
print (level, line, file=sys.stderr)
|
|
node = {
|
|
'text': line,
|
|
'level': level,
|
|
'children': []
|
|
}
|
|
while len(stack) > level:
|
|
stack.pop()
|
|
if len(stack):
|
|
stack[len(stack)-1]['children'].append(node)
|
|
stack.append(node)
|
|
return stack[0]
|
|
|
|
if __name__ == "__main__":
|
|
n = process(sys.stdin)
|
|
import json
|
|
print (json.dumps(n, indent=2)) |