2 # -*- coding: UTF-8 -*-
3 from match
import Match
6 """ binds some html content page with additional markup - in this
7 base version it is just the header information while other variants
8 might add navigation items around the content block elements """
9 def __init__(self
, o
, filename
= None):
11 self
.filename
= filename
17 def meta(self
, style
):
18 """ add some header meta entry """
21 def style(self
, style
):
22 """ add a style block """
23 self
.style
+= [ style
]
26 """ add some content """
30 if self
.title
: return self
.title
31 try: return self
.text
[0].get_title()
32 except Exception, e
: pass
34 def _html_meta(self
, meta
):
35 """ accepts adapter objects with .html_meta() """
36 try: return meta
.html_meta()
37 except Exception, e
: pass
39 def _html_style(self
, style
):
40 """ accepts adapter objects with .html_style() and .xml_style() """
42 try: return style
.html_style()
43 except Exception, e
: ee
= e
; pass
44 try: return style
.xml_style()
45 except Exception, e
: print "HtmlDocument/style", ee
, e
; pass
46 try: return str(style
)
47 except Exception, e
: print "HtmlDocument/style", e
; return ""
48 def _html_text(self
, html
):
49 """ accepts adapter objects with .html_text() and .xml_text() """
51 try: return html
.html_text()
52 except Exception, e
: ee
= e
; pass
53 try: return html
.xml_text()
54 except Exception, e
: print "HtmlDocument/text", ee
, e
; pass
56 except Exception, e
: print "HtmlDocument/text", e
; return " "
62 fd
= open(self
.o
.body
, "r")
69 def html_header(self
):
70 navi
= self
.navigation()
73 title
= self
.get_title()
75 T
+= "<title>"+title
+"</title>"
77 for style
in self
.style
:
78 T
+= self
._html
_style
(style
)
80 return T
+"</head><body>"
82 title
= self
.get_title()
84 Match(r
"<!--title-->") >> " - "+title
) & (
85 Match(r
"<!--VERSION-->") >> self
.o
.version
) & (
86 Match(r
"(?m).*</body></html>") >> "")
87 def html_footer(self
):
88 navi
= self
.navigation()
90 return "</body></html>"
93 Match(r
"(?m)(.*</body></html>)") >> "%&%&%&%\\1") & (
94 Match(r
"(?s).*%&%&%&%") >> "")
95 def _filename(self
, filename
):
96 if filename
is not None:
97 self
.filename
= filename
98 filename
= self
.filename
99 if not filename
& Match(r
"\.\w+$"):
101 if not ext
: ext
= "html"
104 def save(self
, filename
= None):
105 filename
= self
._filename
(filename
)
106 print "writing '"+filename
+"'"
108 fd
= open(filename
, "w")
109 print >>fd
, self
.html_header()
110 for text
in self
.text
:
111 print >>fd
, self
._html
_text
(text
)
112 print >>fd
, self
.html_footer()
116 print "could not open '"+filename
+"'file", e