Show More
@@ -84,11 +84,12 b' def template(tmpl, filters = {}, **map):' | |||
|
84 | 84 | return |
|
85 | 85 | |
|
86 | 86 | class templater: |
|
87 | def __init__(self, mapfile, filters = {}): | |
|
87 | def __init__(self, mapfile, filters = {}, defaults = {}): | |
|
88 | 88 | self.cache = {} |
|
89 | 89 | self.map = {} |
|
90 | 90 | self.base = os.path.dirname(mapfile) |
|
91 | 91 | self.filters = filters |
|
92 | self.defaults = defaults | |
|
92 | 93 | |
|
93 | 94 | for l in file(mapfile): |
|
94 | 95 | m = re.match(r'(\S+)\s*=\s*"(.*)"$', l) |
@@ -102,14 +103,16 b' class templater:' | |||
|
102 | 103 | raise "unknown map entry '%s'" % l |
|
103 | 104 | |
|
104 | 105 | def __call__(self, t, **map): |
|
106 | m = self.defaults.copy() | |
|
107 | m.update(map) | |
|
105 | 108 | try: |
|
106 | 109 | tmpl = self.cache[t] |
|
107 | 110 | except KeyError: |
|
108 | 111 | tmpl = self.cache[t] = file(self.map[t]).read() |
|
109 |
return template(tmpl, self.filters, **m |
|
|
112 | return template(tmpl, self.filters, **m) | |
|
110 | 113 | |
|
111 | 114 | def rfc822date(x): |
|
112 | return strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime(x)) | |
|
115 | return time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime(x)) | |
|
113 | 116 | |
|
114 | 117 | class hgweb: |
|
115 | 118 | maxchanges = 10 |
@@ -221,15 +224,10 b' class hgweb:' | |||
|
221 | 224 | yield diffblock(mdiff.unidiff(to, date1, tn, date2, f), f, tn) |
|
222 | 225 | |
|
223 | 226 | def header(self): |
|
224 | port = os.environ["SERVER_PORT"] | |
|
225 | port = port != "80" and (":" + port) or "" | |
|
226 | self.url = "http://%s%s%s" % \ | |
|
227 | (os.environ["SERVER_NAME"], port, os.environ["REQUEST_URI"]) | |
|
228 | ||
|
229 | yield self.t("header", repo = self.reponame, url = self.url) | |
|
227 | yield self.t("header") | |
|
230 | 228 | |
|
231 | 229 | def footer(self): |
|
232 |
yield self.t("footer" |
|
|
230 | yield self.t("footer") | |
|
233 | 231 | |
|
234 | 232 | def changelog(self, pos): |
|
235 | 233 | def changenav(): |
@@ -290,9 +288,6 b' class hgweb:' | |||
|
290 | 288 | pos = end - 1 |
|
291 | 289 | |
|
292 | 290 | yield self.t('changelog', |
|
293 | header = self.header(), | |
|
294 | footer = self.footer(), | |
|
295 | repo = self.reponame, | |
|
296 | 291 | changenav = changenav, |
|
297 | 292 | manifest = hex(mf), |
|
298 | 293 | rev = pos, changesets = count, entries = changelist) |
@@ -348,10 +343,7 b' class hgweb:' | |||
|
348 | 343 | mf = cl.read(cl.tip())[0] |
|
349 | 344 | |
|
350 | 345 | yield self.t('search', |
|
351 | header = self.header(), | |
|
352 | footer = self.footer(), | |
|
353 | 346 | query = query, |
|
354 | repo = self.reponame, | |
|
355 | 347 | manifest = hex(mf), |
|
356 | 348 | entries = changelist) |
|
357 | 349 | |
@@ -372,9 +364,6 b' class hgweb:' | |||
|
372 | 364 | yield self.diff(p1, n, changes[3]) |
|
373 | 365 | |
|
374 | 366 | yield self.t('changeset', |
|
375 | header = self.header(), | |
|
376 | footer = self.footer(), | |
|
377 | repo = self.reponame, | |
|
378 | 367 | diff = diff, |
|
379 | 368 | rev = cl.rev(n), |
|
380 | 369 | node = nodeid, |
@@ -420,9 +409,6 b' class hgweb:' | |||
|
420 | 409 | yield l |
|
421 | 410 | |
|
422 | 411 | yield self.t("filelog", |
|
423 | header = self.header(), | |
|
424 | footer = self.footer(), | |
|
425 | repo = self.reponame, | |
|
426 | 412 | file = f, |
|
427 | 413 | filenode = filenode, |
|
428 | 414 | entries = entries) |
@@ -445,9 +431,6 b' class hgweb:' | |||
|
445 | 431 | parity = l & 1) |
|
446 | 432 | |
|
447 | 433 | yield self.t("filerevision", file = f, |
|
448 | header = self.header(), | |
|
449 | footer = self.footer(), | |
|
450 | repo = self.reponame, | |
|
451 | 434 | filenode = node, |
|
452 | 435 | path = up(f), |
|
453 | 436 | text = lines(), |
@@ -508,9 +491,6 b' class hgweb:' | |||
|
508 | 491 | line = l) |
|
509 | 492 | |
|
510 | 493 | yield self.t("fileannotate", |
|
511 | header = self.header(), | |
|
512 | footer = self.footer(), | |
|
513 | repo = self.reponame, | |
|
514 | 494 | file = f, |
|
515 | 495 | filenode = node, |
|
516 | 496 | annotate = annotate, |
@@ -568,9 +548,6 b' class hgweb:' | |||
|
568 | 548 | parity = 1 - parity |
|
569 | 549 | |
|
570 | 550 | yield self.t("manifest", |
|
571 | header = self.header(), | |
|
572 | footer = self.footer(), | |
|
573 | repo = self.reponame, | |
|
574 | 551 | manifest = mnode, |
|
575 | 552 | rev = rev, |
|
576 | 553 | node = hex(node), |
@@ -595,9 +572,6 b' class hgweb:' | |||
|
595 | 572 | parity = 1 - parity |
|
596 | 573 | |
|
597 | 574 | yield self.t("tags", |
|
598 | header = self.header(), | |
|
599 | footer = self.footer(), | |
|
600 | repo = self.reponame, | |
|
601 | 575 | manifest = hex(mf), |
|
602 | 576 | entries = entries) |
|
603 | 577 | |
@@ -612,9 +586,6 b' class hgweb:' | |||
|
612 | 586 | yield self.diff(p1, n, file) |
|
613 | 587 | |
|
614 | 588 | yield self.t("filediff", |
|
615 | header = self.header(), | |
|
616 | footer = self.footer(), | |
|
617 | repo = self.reponame, | |
|
618 | 589 | file = file, |
|
619 | 590 | filenode = hex(mf.get(file, nullid)), |
|
620 | 591 | node = changeset, |
@@ -637,7 +608,17 b' class hgweb:' | |||
|
637 | 608 | p = os.path.join(self.templates, b) |
|
638 | 609 | if os.path.isfile(p): m = p |
|
639 | 610 | |
|
640 | self.t = templater(m, self.filters) | |
|
611 | port = os.environ["SERVER_PORT"] | |
|
612 | port = port != "80" and (":" + port) or "" | |
|
613 | url = "http://%s%s%s" % \ | |
|
614 | (os.environ["SERVER_NAME"], port, os.environ["REQUEST_URI"]) | |
|
615 | ||
|
616 | self.t = templater(m, self.filters, | |
|
617 | {"url":url, | |
|
618 | "repo":self.reponame, | |
|
619 | "header":self.header(), | |
|
620 | "footer":self.footer(), | |
|
621 | }) | |
|
641 | 622 | |
|
642 | 623 | if not args.has_key('cmd') or args['cmd'][0] == 'changelog': |
|
643 | 624 | c = self.repo.changelog.count() - 1 |
@@ -1,6 +1,6 b'' | |||
|
1 | 1 | <item> |
|
2 | 2 | <title>#desc|firstline|escape#</title> |
|
3 |
<link> |
|
|
3 | <link>#url#?cmd=changeset;node=#node#"</link> | |
|
4 | 4 | <description>#desc|escape|addbreaks#</description> |
|
5 | 5 | <author>#author|obfuscate#</author> |
|
6 | 6 | <pubDate>#date|rfc822date#</pubDate> |
@@ -1,6 +1,6 b'' | |||
|
1 | 1 | <item> |
|
2 | 2 | <title>#desc|firstline|escape#</title> |
|
3 |
<link> |
|
|
3 | <link>#url#?cmd=file;file=#file#;filenode=#filenode#"</link> | |
|
4 | 4 | <description>#desc|escape|addbreaks#</description> |
|
5 | 5 | <author>#author|obfuscate#</author> |
|
6 | 6 | <pubDate>#date|rfc822date#</pubDate>> |
General Comments 0
You need to be logged in to leave comments.
Login now