forked from gandrewstone/yadog
-
Notifications
You must be signed in to change notification settings - Fork 0
/
htmlcommon.py
85 lines (69 loc) · 2.79 KB
/
htmlcommon.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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import pdb
import os.path
from constants import *
from common import *
import microdom
def filenameify(s):
s = s.replace(" ","_")
return s
def htmlify(s):
s = s.replace(" ","_")
return s
def render(obj):
if isInstanceOf(obj,microdom.MicroDom):
if obj.tag_ == "html":
return obj.write()
else:
return obj.writeChildren()
else: return str(obj)
def obj2file(obj):
p = obj.findParent(TagsWithOwnFile) # Find a parent object by tag for a tag that has its own .html file
if p: p = p[0]
else: p = obj
n = os.path.basename(p.name) # Behave like the name is a file to automatically rip off anything that would seem like a directory (and besides, it MAY be a file)
return p.tag_ + "_" + n + ".html"
def obj2anchor(obj):
if obj.tag_ in TagsWithOwnFile:
return "top"
p = obj.findParent(TagsWithOwnFile)[0]
t = obj
name = []
while t != p:
try:
portion = t.name
name.insert(0, htmlify(portion))
except: # skip if t.name does not exist
pass
t = t.parent_
return "_".join(name)
def obj2link(obj,loadFile=None):
if loadFile is None: loadFile = obj2file(obj)
return "<a href='%s'>%s</a>" % (loadFile,obj.name)
def obj2tlink(obj,replacement,text=None,loadFile=None):
if not obj: return ""
if not text: text = obj.name
if replacement[0] != "'":
pdb.set_trace()
if loadFile is None: loadFile = obj2file(obj)
# return """<span onClick="ReplaceChildrenWithUri(%s,'%s'); location.hash='%s';" onMouseout="this.setAttribute('style','');" onMouseover="this.setAttribute('style','color:Blue;');">%s</span>""" % (replacement,loadFile,obj2anchor(obj),text)
return """<a class='invis' onclick="ReplaceChildrenWithUri(%s,'%s'); location.hash='%s'; return false;" href="%s">%s</a>""" % (replacement,loadFile,os.path.splitext(loadFile)[0] + "__" + obj2anchor(obj),loadFile, text)
def refobj2tlink(obj,replacement,text=None,loadFile=None):
if not obj: return ""
if not text: text = obj.name
if replacement[0] != "'":
pdb.set_trace()
if loadFile is None: loadFile = obj2file(obj)
return """<a onclick="ReplaceChildrenWithUri(%s,'%s'); location.hash='%s'; return false;" href="%s">%s</a>""" % (replacement,loadFile,os.path.splitext(loadFile)[0] + "__" + obj2anchor(obj),loadFile, text)
# return """<span onClick="ReplaceChildrenWithUri(%s,'%s'); location.hash='%s';" onMouseout="this.setAttribute('style','');" onMouseover="this.setAttribute('style','color:Yellow;');">%s</span>""" % (replacement,loadFile,obj2anchor(obj),text)
def parenttLink(obj,tag,rep):
# Figure out the upwards links
fileobj = obj.findParent(tag)
if fileobj: f = obj2tlink(fileobj[0],rep)
else: f = ""
return f
def parentLink(obj,tag):
# Figure out the upwards links
fileobj = obj.findParent(tag)
if fileobj: f = obj2link(fileobj[0])
else: f = ""
return f