equal
deleted
inserted
replaced
74 |
74 |
75 fl = m.group(2) |
75 fl = m.group(2) |
76 if fl: |
76 if fl: |
77 for f in fl.split("|")[1:]: |
77 for f in fl.split("|")[1:]: |
78 v = filters[f](v) |
78 v = filters[f](v) |
79 |
79 |
80 yield v |
80 yield v |
81 tmpl = tmpl[m.end(0):] |
81 tmpl = tmpl[m.end(0):] |
82 else: |
82 else: |
83 yield tmpl |
83 yield tmpl |
84 return |
84 return |
87 def __init__(self, mapfile, filters = {}): |
87 def __init__(self, mapfile, filters = {}): |
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 |
92 |
93 for l in file(mapfile): |
93 for l in file(mapfile): |
94 m = re.match(r'(\S+)\s*=\s*"(.*)"$', l) |
94 m = re.match(r'(\S+)\s*=\s*"(.*)"$', l) |
95 if m: |
95 if m: |
96 self.cache[m.group(1)] = m.group(2) |
96 self.cache[m.group(1)] = m.group(2) |
97 else: |
97 else: |
105 try: |
105 try: |
106 tmpl = self.cache[t] |
106 tmpl = self.cache[t] |
107 except KeyError: |
107 except KeyError: |
108 tmpl = self.cache[t] = file(self.map[t]).read() |
108 tmpl = self.cache[t] = file(self.map[t]).read() |
109 return template(tmpl, self.filters, **map) |
109 return template(tmpl, self.filters, **map) |
110 |
110 |
111 class hgweb: |
111 class hgweb: |
112 maxchanges = 10 |
112 maxchanges = 10 |
113 maxfiles = 10 |
113 maxfiles = 10 |
114 |
114 |
115 def __init__(self, path, name, templates = ""): |
115 def __init__(self, path, name, templates = ""): |
156 yield self.t(t1, node = node, rev = rev, **args) |
156 yield self.t(t1, node = node, rev = rev, **args) |
157 |
157 |
158 def diff(self, node1, node2, files): |
158 def diff(self, node1, node2, files): |
159 def filterfiles(list, files): |
159 def filterfiles(list, files): |
160 l = [ x for x in list if x in files ] |
160 l = [ x for x in list if x in files ] |
161 |
161 |
162 for f in files: |
162 for f in files: |
163 if f[-1] != os.sep: f += os.sep |
163 if f[-1] != os.sep: f += os.sep |
164 l += [ x for x in list if x.startswith(f) ] |
164 l += [ x for x in list if x.startswith(f) ] |
165 return l |
165 return l |
166 |
166 |
170 lines = prettyprintlines(diff), |
170 lines = prettyprintlines(diff), |
171 parity = parity[0], |
171 parity = parity[0], |
172 file = f, |
172 file = f, |
173 filenode = hex(fn or nullid)) |
173 filenode = hex(fn or nullid)) |
174 parity[0] = 1 - parity[0] |
174 parity[0] = 1 - parity[0] |
175 |
175 |
176 def prettyprintlines(diff): |
176 def prettyprintlines(diff): |
177 for l in diff.splitlines(1): |
177 for l in diff.splitlines(1): |
178 if l.startswith('+'): |
178 if l.startswith('+'): |
179 yield self.t("difflineplus", line = l) |
179 yield self.t("difflineplus", line = l) |
180 elif l.startswith('-'): |
180 elif l.startswith('-'): |
232 r = "%d" % f |
232 r = "%d" % f |
233 if pos + f < count: l.append(("+" + r, pos + f)) |
233 if pos + f < count: l.append(("+" + r, pos + f)) |
234 if pos - f >= 0: l.insert(0, ("-" + r, pos - f)) |
234 if pos - f >= 0: l.insert(0, ("-" + r, pos - f)) |
235 |
235 |
236 yield self.t("naventry", rev = 0, label="(0)") |
236 yield self.t("naventry", rev = 0, label="(0)") |
237 |
237 |
238 for label, rev in l: |
238 for label, rev in l: |
239 yield self.t("naventry", label = label, rev = rev) |
239 yield self.t("naventry", label = label, rev = rev) |
240 |
240 |
241 yield self.t("naventry", label="tip") |
241 yield self.t("naventry", label="tip") |
242 |
242 |
291 cl = self.repo.changelog |
291 cl = self.repo.changelog |
292 changes = cl.read(n) |
292 changes = cl.read(n) |
293 p1, p2 = cl.parents(n) |
293 p1, p2 = cl.parents(n) |
294 p1rev, p2rev = cl.rev(p1), cl.rev(p2) |
294 p1rev, p2rev = cl.rev(p1), cl.rev(p2) |
295 t = float(changes[2].split(' ')[0]) |
295 t = float(changes[2].split(' ')[0]) |
296 |
296 |
297 files = [] |
297 files = [] |
298 mf = self.repo.manifest.read(changes[0]) |
298 mf = self.repo.manifest.read(changes[0]) |
299 for f in changes[3]: |
299 for f in changes[3]: |
300 files.append(self.t("filenodelink", |
300 files.append(self.t("filenodelink", |
301 filenode = hex(mf.get(f, nullid)), file = f)) |
301 filenode = hex(mf.get(f, nullid)), file = f)) |
328 count = fl.count() |
328 count = fl.count() |
329 |
329 |
330 def entries(): |
330 def entries(): |
331 l = [] |
331 l = [] |
332 parity = (count - 1) & 1 |
332 parity = (count - 1) & 1 |
333 |
333 |
334 for i in range(count): |
334 for i in range(count): |
335 |
335 |
336 n = fl.node(i) |
336 n = fl.node(i) |
337 lr = fl.linkrev(n) |
337 lr = fl.linkrev(n) |
338 cn = cl.node(lr) |
338 cn = cl.node(lr) |
421 for r, l in fl.annotate(n): |
421 for r, l in fl.annotate(n): |
422 try: |
422 try: |
423 cnode = ncache[r] |
423 cnode = ncache[r] |
424 except KeyError: |
424 except KeyError: |
425 cnode = ncache[r] = self.repo.changelog.node(r) |
425 cnode = ncache[r] = self.repo.changelog.node(r) |
426 |
426 |
427 try: |
427 try: |
428 name = bcache[r] |
428 name = bcache[r] |
429 except KeyError: |
429 except KeyError: |
430 cl = self.repo.changelog.read(cnode) |
430 cl = self.repo.changelog.read(cnode) |
431 name = cl[1] |
431 name = cl[1] |
472 rev = self.repo.manifest.rev(bin(mnode)) |
472 rev = self.repo.manifest.rev(bin(mnode)) |
473 node = self.repo.changelog.node(rev) |
473 node = self.repo.changelog.node(rev) |
474 mff=self.repo.manifest.readflags(bin(mnode)) |
474 mff=self.repo.manifest.readflags(bin(mnode)) |
475 |
475 |
476 files = {} |
476 files = {} |
477 |
477 |
478 p = path[1:] |
478 p = path[1:] |
479 l = len(p) |
479 l = len(p) |
480 |
480 |
481 for f,n in mf.items(): |
481 for f,n in mf.items(): |
482 if f[:l] != p: |
482 if f[:l] != p: |
499 yield self.t("manifestfileentry", |
499 yield self.t("manifestfileentry", |
500 file = full, |
500 file = full, |
501 manifest = mnode, |
501 manifest = mnode, |
502 filenode = hex(fnode), |
502 filenode = hex(fnode), |
503 parity = parity, |
503 parity = parity, |
504 basename = f, |
504 basename = f, |
505 permissions = mff[full]) |
505 permissions = mff[full]) |
506 else: |
506 else: |
507 yield self.t("manifestdirentry", |
507 yield self.t("manifestdirentry", |
508 parity = parity, |
508 parity = parity, |
509 path = os.path.join(path, f), |
509 path = os.path.join(path, f), |
548 n = bin(changeset) |
548 n = bin(changeset) |
549 cl = self.repo.changelog |
549 cl = self.repo.changelog |
550 p1 = cl.parents(n)[0] |
550 p1 = cl.parents(n)[0] |
551 cs = cl.read(n) |
551 cs = cl.read(n) |
552 mf = self.repo.manifest.read(cs[0]) |
552 mf = self.repo.manifest.read(cs[0]) |
553 |
553 |
554 def diff(): |
554 def diff(): |
555 yield self.diff(p1, n, file) |
555 yield self.diff(p1, n, file) |
556 |
556 |
557 yield self.t("filediff", |
557 yield self.t("filediff", |
558 header = self.header(), |
558 header = self.header(), |
563 node = changeset, |
563 node = changeset, |
564 rev = self.repo.changelog.rev(n), |
564 rev = self.repo.changelog.rev(n), |
565 p1 = hex(p1), |
565 p1 = hex(p1), |
566 p1rev = self.repo.changelog.rev(p1), |
566 p1rev = self.repo.changelog.rev(p1), |
567 diff = diff) |
567 diff = diff) |
568 |
568 |
569 # add tags to things |
569 # add tags to things |
570 # tags -> list of changesets corresponding to tags |
570 # tags -> list of changesets corresponding to tags |
571 # find tag, changeset, file |
571 # find tag, changeset, file |
572 |
572 |
573 def run(self): |
573 def run(self): |
577 m = os.path.join(self.templates, "map") |
577 m = os.path.join(self.templates, "map") |
578 if args.has_key('style'): |
578 if args.has_key('style'): |
579 b = os.path.basename("map-" + args['style'][0]) |
579 b = os.path.basename("map-" + args['style'][0]) |
580 p = os.path.join(self.templates, b) |
580 p = os.path.join(self.templates, b) |
581 if os.path.isfile(p): m = p |
581 if os.path.isfile(p): m = p |
582 |
582 |
583 self.t = templater(m, self.filters) |
583 self.t = templater(m, self.filters) |
584 |
584 |
585 if not args.has_key('cmd') or args['cmd'][0] == 'changelog': |
585 if not args.has_key('cmd') or args['cmd'][0] == 'changelog': |
586 hi = self.repo.changelog.count() - 1 |
586 hi = self.repo.changelog.count() - 1 |
587 if args.has_key('rev'): |
587 if args.has_key('rev'): |
589 try: |
589 try: |
590 hi = self.repo.changelog.rev(self.repo.lookup(hi)) |
590 hi = self.repo.changelog.rev(self.repo.lookup(hi)) |
591 except KeyError: pass |
591 except KeyError: pass |
592 |
592 |
593 write(self.changelog(hi)) |
593 write(self.changelog(hi)) |
594 |
594 |
595 elif args['cmd'][0] == 'changeset': |
595 elif args['cmd'][0] == 'changeset': |
596 write(self.changeset(args['node'][0])) |
596 write(self.changeset(args['node'][0])) |
597 |
597 |
598 elif args['cmd'][0] == 'manifest': |
598 elif args['cmd'][0] == 'manifest': |
599 write(self.manifest(args['manifest'][0], args['path'][0])) |
599 write(self.manifest(args['manifest'][0], args['path'][0])) |
672 query = "" |
672 query = "" |
673 p = self.path.find("?") |
673 p = self.path.find("?") |
674 if p: |
674 if p: |
675 query = self.path[p + 1:] |
675 query = self.path[p + 1:] |
676 query = query.replace('+', ' ') |
676 query = query.replace('+', ' ') |
677 |
677 |
678 env = {} |
678 env = {} |
679 env['GATEWAY_INTERFACE'] = 'CGI/1.1' |
679 env['GATEWAY_INTERFACE'] = 'CGI/1.1' |
680 env['REQUEST_METHOD'] = self.command |
680 env['REQUEST_METHOD'] = self.command |
681 if query: |
681 if query: |
682 env['QUERY_STRING'] = query |
682 env['QUERY_STRING'] = query |