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
8 years ago
|
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))
|