-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlitehtml-dumper.py
executable file
·69 lines (51 loc) · 1.5 KB
/
litehtml-dumper.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/usr/bin/env vpython3
import sys
import logging
import logme
from litehtmlpy import litehtml, litehtmlpy
litehtmlpy.debuglog(0)
logger = logging.getLogger(__name__)
class document_container(litehtml.document_container):
pass
class dumper(litehtmlpy.dumper):
def __init__(self):
super().__init__()
self.indent = 0
def printi(self, *args):
s = ' '*self.indent if self.indent else ''
print(s, *args)
def begin_node(self, descr):
self.printi('begin_node', descr)
self.indent += 1
def end_node(self):
self.indent -= 1
self.printi('end_node')
def begin_attrs_group(self, descr):
self.printi('begin_attrs_group', descr)
self.indent += 1
def end_attrs_group(self):
self.indent -= 1
self.printi('end_attrs_group')
def add_attr(self, name, value):
self.printi('add_attr', name, value)
class Main:
def demo(self):
if len(sys.argv) > 1:
fname = sys.argv[1]
else:
fname = 'demo.html'
fname = 'litehtmlt.html'
html = open(fname, 'rt').read()
cntr = document_container()
print('max size=', cntr.size)
doc = litehtmlpy.fromString(cntr, html, None, None)
doc.render(cntr.size[0], litehtmlpy.render_all)
print('doc: width:', doc.width(), 'height:', doc.height())
dump = dumper()
doc.dump(dump)
del doc
del cntr
def main():
app = Main()
app.demo()
main()