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