Show More
@@ -25,26 +25,32 b' def obfuscate(text):' | |||
|
25 | 25 | def httphdr(type): |
|
26 | 26 | print 'Content-type: %s\n' % type |
|
27 | 27 | |
|
28 | def write(*things): | |
|
29 | for thing in things: | |
|
30 | if hasattr(thing, "__iter__"): | |
|
31 | for part in thing: | |
|
32 | write(part) | |
|
33 | else: | |
|
34 | sys.stdout.write(str(thing)) | |
|
35 | ||
|
28 | 36 | class template: |
|
29 | 37 | def __init__(self, tmpl_dir): |
|
30 | 38 | self.tmpl_dir = tmpl_dir |
|
31 | 39 | def do_page(self, tmpl_fn, **map): |
|
32 | out = [] | |
|
33 | 40 | txt = file(os.path.join(self.tmpl_dir, tmpl_fn)).read() |
|
34 | 41 | while txt: |
|
35 | 42 | m = re.search(r"#([a-zA-Z0-9]+)#", txt) |
|
36 | 43 | if m: |
|
37 |
|
|
|
44 | yield txt[:m.start(0)] | |
|
38 | 45 | v = map.get(m.group(1), "") |
|
39 | 46 | if callable(v): |
|
40 |
for y in v(**map): |
|
|
47 | for y in v(**map): yield y | |
|
41 | 48 | else: |
|
42 |
|
|
|
49 | yield v | |
|
43 | 50 | txt = txt[m.end(0):] |
|
44 | 51 | else: |
|
45 |
|
|
|
52 | yield txt | |
|
46 | 53 | txt = '' |
|
47 | return ''.join(out) | |
|
48 | 54 | |
|
49 | 55 | class page: |
|
50 | 56 | def __init__(self, tmpl_dir = "", type="text/html", title="Mercurial Web", |
@@ -52,7 +58,7 b' class page:' | |||
|
52 | 58 | self.tmpl = template(tmpl_dir) |
|
53 | 59 | |
|
54 | 60 | print 'Content-type: %s; charset=%s\n' % (type, charset) |
|
55 |
|
|
|
61 | write(self.tmpl.do_page('htmlstart.tmpl', title = title)) | |
|
56 | 62 | |
|
57 | 63 | def endpage(self): |
|
58 | 64 | print '</BODY>' |
@@ -84,7 +90,7 b' class change_list(page):' | |||
|
84 | 90 | page.__init__(self, tmpl_dir) |
|
85 | 91 | self.repo = repo |
|
86 | 92 | self.numchanges = numchanges |
|
87 |
|
|
|
93 | write(self.tmpl.do_page('changestitle.tmpl', reponame=reponame)) | |
|
88 | 94 | |
|
89 | 95 | def content(self, hi=None): |
|
90 | 96 | cl = [] |
@@ -135,10 +141,10 b' class change_list(page):' | |||
|
135 | 141 | for f in changes[3]: |
|
136 | 142 | files.append('<a href="?cmd=file;cs=%s;fn=%s">%s</a> ' \ |
|
137 | 143 | % (hn, f, cgi.escape(f))) |
|
138 |
|
|
|
144 | write(self.tmpl.do_page('change_table.tmpl', | |
|
139 | 145 | author=obfuscate(changes[1]), |
|
140 | 146 | desc=nl2br(cgi.escape(changes[4])), date=datestr, |
|
141 | files=' '.join(files), revnum=i, revnode=hn) | |
|
147 | files=' '.join(files), revnum=i, revnode=hn)) | |
|
142 | 148 | |
|
143 | 149 | class checkin(page): |
|
144 | 150 | def __init__(self, repo, tmpl_dir, nodestr): |
@@ -164,12 +170,12 b' class checkin(page):' | |||
|
164 | 170 | if i2 != -1: |
|
165 | 171 | p2link = '<a href="?cmd=chkin;nd=%s">%s</a>' % (h2, h2) |
|
166 | 172 | |
|
167 |
|
|
|
173 | write(self.tmpl.do_page('checkin.tmpl', revnum=i, revnode=self.nodestr, | |
|
168 | 174 | p1num=i1, p1node=h1, p2num=i2, p2node=h2, p2link=p2link, |
|
169 | 175 | mfnum=self.repo.manifest.rev(changes[0]), |
|
170 | 176 | mfnode=hg.hex(changes[0]), author=obfuscate(changes[1]), |
|
171 | 177 | desc=nl2br(cgi.escape(changes[4])), date=datestr, |
|
172 | files=' '.join(files)) | |
|
178 | files=' '.join(files))) | |
|
173 | 179 | |
|
174 | 180 | (c, a, d) = self.repo.diffrevs(parents[0], self.node) |
|
175 | 181 | change = self.repo.changelog.read(parents[0]) |
@@ -215,9 +221,9 b' class mfpage(page):' | |||
|
215 | 221 | mf = self.repo.manifest.read(self.node) |
|
216 | 222 | fns = mf.keys() |
|
217 | 223 | fns.sort() |
|
218 |
|
|
|
224 | write(self.tmpl.do_page('mftitle.tmpl', node = self.nodestr)) | |
|
219 | 225 | for f in fns: |
|
220 |
|
|
|
226 | write(self.tmpl.do_page('mfentry.tmpl', fn=f, node=hg.hex(mf[f]))) | |
|
221 | 227 | |
|
222 | 228 | class histpage(page): |
|
223 | 229 | def __init__(self, repo, tmpl_dir, fn): |
@@ -250,10 +256,10 b' class histpage(page):' | |||
|
250 | 256 | if i2 != -1: |
|
251 | 257 | p2entry = ' %d:<a href="?cmd=file;nd=%s;fn=%s">%s</a>' \ |
|
252 | 258 | % (i2, h2, self.fn, h2 ), |
|
253 |
|
|
|
259 | write(self.tmpl.do_page('hist_ent.tmpl', author=obfuscate(changes[1]), | |
|
254 | 260 | csnode=cs, desc=nl2br(cgi.escape(changes[4])), |
|
255 | 261 | date = datestr, fn=self.fn, revnode=h, p1num = i1, |
|
256 | p1node=h1, p2entry=p2entry) | |
|
262 | p1node=h1, p2entry=p2entry)) | |
|
257 | 263 | |
|
258 | 264 | class hgweb: |
|
259 | 265 | repo_path = "." |
General Comments 0
You need to be logged in to leave comments.
Login now