##// END OF EJS Templates
Add globals to templater/fixup RSS...
mpm@selenic.com -
r601:8865eb8a default
parent child Browse files
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, **map)
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", repo = self.reponame)
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>http://127.0.0.1:8000/?cmd=changeset;node=#node#"</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>http://127.0.0.1:8000/?cmd=file;file=#file#;filenode=#filenode#"</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