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