Mercurial > hg > pyhgsh
comparison mercurial/hgweb.py @ 1062:6d5a62a549fa
pep-0008 cleanup
- Don't use spaces around the '=' sign when used to indicate a
keyword argument or a default parameter value.
author | benoit.boissinot@ens-lyon.fr |
---|---|
date | Fri, 26 Aug 2005 13:06:58 +0200 |
parents | bc806ba72959 |
children | 58eefdfb8472 |
comparison
equal
deleted
inserted
replaced
1061:fed8d078840b | 1062:6d5a62a549fa |
---|---|
63 write(part) | 63 write(part) |
64 else: | 64 else: |
65 sys.stdout.write(str(thing)) | 65 sys.stdout.write(str(thing)) |
66 | 66 |
67 class templater: | 67 class templater: |
68 def __init__(self, mapfile, filters = {}, defaults = {}): | 68 def __init__(self, mapfile, filters={}, defaults={}): |
69 self.cache = {} | 69 self.cache = {} |
70 self.map = {} | 70 self.map = {} |
71 self.base = os.path.dirname(mapfile) | 71 self.base = os.path.dirname(mapfile) |
72 self.filters = filters | 72 self.filters = filters |
73 self.defaults = defaults | 73 self.defaults = defaults |
90 tmpl = self.cache[t] | 90 tmpl = self.cache[t] |
91 except KeyError: | 91 except KeyError: |
92 tmpl = self.cache[t] = file(self.map[t]).read() | 92 tmpl = self.cache[t] = file(self.map[t]).read() |
93 return self.template(tmpl, self.filters, **m) | 93 return self.template(tmpl, self.filters, **m) |
94 | 94 |
95 def template(self, tmpl, filters = {}, **map): | 95 def template(self, tmpl, filters={}, **map): |
96 while tmpl: | 96 while tmpl: |
97 m = re.search(r"#([a-zA-Z0-9]+)((%[a-zA-Z0-9]+)*)((\|[a-zA-Z0-9]+)*)#", tmpl) | 97 m = re.search(r"#([a-zA-Z0-9]+)((%[a-zA-Z0-9]+)*)((\|[a-zA-Z0-9]+)*)#", tmpl) |
98 if m: | 98 if m: |
99 yield tmpl[:m.start(0)] | 99 yield tmpl[:m.start(0)] |
100 v = map.get(m.group(1), "") | 100 v = map.get(m.group(1), "") |
160 def date(self, cs): | 160 def date(self, cs): |
161 return time.asctime(time.gmtime(float(cs[2].split(' ')[0]))) | 161 return time.asctime(time.gmtime(float(cs[2].split(' ')[0]))) |
162 | 162 |
163 def listfiles(self, files, mf): | 163 def listfiles(self, files, mf): |
164 for f in files[:self.maxfiles]: | 164 for f in files[:self.maxfiles]: |
165 yield self.t("filenodelink", node = hex(mf[f]), file = f) | 165 yield self.t("filenodelink", node=hex(mf[f]), file=f) |
166 if len(files) > self.maxfiles: | 166 if len(files) > self.maxfiles: |
167 yield self.t("fileellipses") | 167 yield self.t("fileellipses") |
168 | 168 |
169 def listfilediffs(self, files, changeset): | 169 def listfilediffs(self, files, changeset): |
170 for f in files[:self.maxfiles]: | 170 for f in files[:self.maxfiles]: |
171 yield self.t("filedifflink", node = hex(changeset), file = f) | 171 yield self.t("filedifflink", node=hex(changeset), file=f) |
172 if len(files) > self.maxfiles: | 172 if len(files) > self.maxfiles: |
173 yield self.t("fileellipses") | 173 yield self.t("fileellipses") |
174 | 174 |
175 def parents(self, t1, nodes=[], rev=None,**args): | 175 def parents(self, t1, nodes=[], rev=None,**args): |
176 if not rev: rev = lambda x: "" | 176 if not rev: rev = lambda x: "" |
177 for node in nodes: | 177 for node in nodes: |
178 if node != nullid: | 178 if node != nullid: |
179 yield self.t(t1, node = hex(node), rev = rev(node), **args) | 179 yield self.t(t1, node=hex(node), rev=rev(node), **args) |
180 | 180 |
181 def showtag(self, t1, node=nullid, **args): | 181 def showtag(self, t1, node=nullid, **args): |
182 for t in self.repo.nodetags(node): | 182 for t in self.repo.nodetags(node): |
183 yield self.t(t1, tag = t, **args) | 183 yield self.t(t1, tag=t, **args) |
184 | 184 |
185 def diff(self, node1, node2, files): | 185 def diff(self, node1, node2, files): |
186 def filterfiles(list, files): | 186 def filterfiles(list, files): |
187 l = [ x for x in list if x in files ] | 187 l = [ x for x in list if x in files ] |
188 | 188 |
201 parity[0] = 1 - parity[0] | 201 parity[0] = 1 - parity[0] |
202 | 202 |
203 def prettyprintlines(diff): | 203 def prettyprintlines(diff): |
204 for l in diff.splitlines(1): | 204 for l in diff.splitlines(1): |
205 if l.startswith('+'): | 205 if l.startswith('+'): |
206 yield self.t("difflineplus", line = l) | 206 yield self.t("difflineplus", line=l) |
207 elif l.startswith('-'): | 207 elif l.startswith('-'): |
208 yield self.t("difflineminus", line = l) | 208 yield self.t("difflineminus", line=l) |
209 elif l.startswith('@'): | 209 elif l.startswith('@'): |
210 yield self.t("difflineat", line = l) | 210 yield self.t("difflineat", line=l) |
211 else: | 211 else: |
212 yield self.t("diffline", line = l) | 212 yield self.t("diffline", line=l) |
213 | 213 |
214 r = self.repo | 214 r = self.repo |
215 cl = r.changelog | 215 cl = r.changelog |
216 mf = r.manifest | 216 mf = r.manifest |
217 change1 = cl.read(node1) | 217 change1 = cl.read(node1) |
238 tn = None | 238 tn = None |
239 yield diffblock(mdiff.unidiff(to, date1, tn, date2, f), f, tn) | 239 yield diffblock(mdiff.unidiff(to, date1, tn, date2, f), f, tn) |
240 | 240 |
241 def changelog(self, pos): | 241 def changelog(self, pos): |
242 def changenav(**map): | 242 def changenav(**map): |
243 def seq(factor = 1): | 243 def seq(factor=1): |
244 yield 1 * factor | 244 yield 1 * factor |
245 yield 3 * factor | 245 yield 3 * factor |
246 #yield 5 * factor | 246 #yield 5 * factor |
247 for f in seq(factor * 10): | 247 for f in seq(factor * 10): |
248 yield f | 248 yield f |
294 start = max(0, pos - self.maxchanges + 1) | 294 start = max(0, pos - self.maxchanges + 1) |
295 end = min(count, start + self.maxchanges) | 295 end = min(count, start + self.maxchanges) |
296 pos = end - 1 | 296 pos = end - 1 |
297 | 297 |
298 yield self.t('changelog', | 298 yield self.t('changelog', |
299 changenav = changenav, | 299 changenav=changenav, |
300 manifest = hex(mf), | 300 manifest=hex(mf), |
301 rev = pos, changesets = count, entries = changelist) | 301 rev=pos, changesets=count, entries=changelist) |
302 | 302 |
303 def search(self, query): | 303 def search(self, query): |
304 | 304 |
305 def changelist(**map): | 305 def changelist(**map): |
306 cl = self.repo.changelog | 306 cl = self.repo.changelog |
332 hn = hex(n) | 332 hn = hex(n) |
333 t = float(changes[2].split(' ')[0]) | 333 t = float(changes[2].split(' ')[0]) |
334 | 334 |
335 yield self.t( | 335 yield self.t( |
336 'searchentry', | 336 'searchentry', |
337 parity = count & 1, | 337 parity=count & 1, |
338 author = changes[1], | 338 author=changes[1], |
339 parent = self.parents("changelogparent", | 339 parent=self.parents("changelogparent", |
340 cl.parents(n), cl.rev), | 340 cl.parents(n), cl.rev), |
341 changelogtag = self.showtag("changelogtag",n), | 341 changelogtag=self.showtag("changelogtag",n), |
342 manifest = hex(changes[0]), | 342 manifest=hex(changes[0]), |
343 desc = changes[4], | 343 desc=changes[4], |
344 date = t, | 344 date=t, |
345 files = self.listfilediffs(changes[3], n), | 345 files=self.listfilediffs(changes[3], n), |
346 rev = i, | 346 rev=i, |
347 node = hn) | 347 node=hn) |
348 | 348 |
349 if count >= self.maxchanges: break | 349 if count >= self.maxchanges: break |
350 | 350 |
351 cl = self.repo.changelog | 351 cl = self.repo.changelog |
352 mf = cl.read(cl.tip())[0] | 352 mf = cl.read(cl.tip())[0] |
353 | 353 |
354 yield self.t('search', | 354 yield self.t('search', |
355 query = query, | 355 query=query, |
356 manifest = hex(mf), | 356 manifest=hex(mf), |
357 entries = changelist) | 357 entries=changelist) |
358 | 358 |
359 def changeset(self, nodeid): | 359 def changeset(self, nodeid): |
360 n = bin(nodeid) | 360 n = bin(nodeid) |
361 cl = self.repo.changelog | 361 cl = self.repo.changelog |
362 changes = cl.read(n) | 362 changes = cl.read(n) |
365 | 365 |
366 files = [] | 366 files = [] |
367 mf = self.repo.manifest.read(changes[0]) | 367 mf = self.repo.manifest.read(changes[0]) |
368 for f in changes[3]: | 368 for f in changes[3]: |
369 files.append(self.t("filenodelink", | 369 files.append(self.t("filenodelink", |
370 filenode = hex(mf.get(f, nullid)), file = f)) | 370 filenode = hex(mf.get(f, nullid)), file=f)) |
371 | 371 |
372 def diff(**map): | 372 def diff(**map): |
373 yield self.diff(p1, n, None) | 373 yield self.diff(p1, n, None) |
374 | 374 |
375 yield self.t('changeset', | 375 yield self.t('changeset', |
376 diff = diff, | 376 diff=diff, |
377 rev = cl.rev(n), | 377 rev=cl.rev(n), |
378 node = nodeid, | 378 node=nodeid, |
379 parent = self.parents("changesetparent", | 379 parent=self.parents("changesetparent", |
380 cl.parents(n), cl.rev), | 380 cl.parents(n), cl.rev), |
381 changesettag = self.showtag("changesettag",n), | 381 changesettag=self.showtag("changesettag",n), |
382 manifest = hex(changes[0]), | 382 manifest=hex(changes[0]), |
383 author = changes[1], | 383 author=changes[1], |
384 desc = changes[4], | 384 desc=changes[4], |
385 date = t, | 385 date=t, |
386 files = files) | 386 files=files) |
387 | 387 |
388 def filelog(self, f, filenode): | 388 def filelog(self, f, filenode): |
389 cl = self.repo.changelog | 389 cl = self.repo.changelog |
390 fl = self.repo.file(f) | 390 fl = self.repo.file(f) |
391 count = fl.count() | 391 count = fl.count() |
415 parity = 1 - parity | 415 parity = 1 - parity |
416 | 416 |
417 for e in l: yield e | 417 for e in l: yield e |
418 | 418 |
419 yield self.t("filelog", | 419 yield self.t("filelog", |
420 file = f, | 420 file=f, |
421 filenode = filenode, | 421 filenode=filenode, |
422 entries = entries) | 422 entries=entries) |
423 | 423 |
424 def filerevision(self, f, node): | 424 def filerevision(self, f, node): |
425 fl = self.repo.file(f) | 425 fl = self.repo.file(f) |
426 n = bin(node) | 426 n = bin(node) |
427 text = fl.read(n) | 427 text = fl.read(n) |
436 for l, t in enumerate(text.splitlines(1)): | 436 for l, t in enumerate(text.splitlines(1)): |
437 yield {"line": t, | 437 yield {"line": t, |
438 "linenumber": "% 6d" % (l + 1), | 438 "linenumber": "% 6d" % (l + 1), |
439 "parity": l & 1} | 439 "parity": l & 1} |
440 | 440 |
441 yield self.t("filerevision", file = f, | 441 yield self.t("filerevision", file=f, |
442 filenode = node, | 442 filenode=node, |
443 path = up(f), | 443 path=up(f), |
444 text = lines(), | 444 text=lines(), |
445 rev = changerev, | 445 rev=changerev, |
446 node = hex(cn), | 446 node=hex(cn), |
447 manifest = hex(mfn), | 447 manifest=hex(mfn), |
448 author = cs[1], | 448 author=cs[1], |
449 date = t, | 449 date=t, |
450 parent = self.parents("filerevparent", | 450 parent=self.parents("filerevparent", |
451 fl.parents(n), fl.rev, file=f), | 451 fl.parents(n), fl.rev, file=f), |
452 permissions = self.repo.manifest.readflags(mfn)[f]) | 452 permissions=self.repo.manifest.readflags(mfn)[f]) |
453 | 453 |
454 def fileannotate(self, f, node): | 454 def fileannotate(self, f, node): |
455 bcache = {} | 455 bcache = {} |
456 ncache = {} | 456 ncache = {} |
457 fl = self.repo.file(f) | 457 fl = self.repo.file(f) |
564 "manifest": mnode, | 564 "manifest": mnode, |
565 "basename": f[:-1]} | 565 "basename": f[:-1]} |
566 parity = 1 - parity | 566 parity = 1 - parity |
567 | 567 |
568 yield self.t("manifest", | 568 yield self.t("manifest", |
569 manifest = mnode, | 569 manifest=mnode, |
570 rev = rev, | 570 rev=rev, |
571 node = hex(node), | 571 node=hex(node), |
572 path = path, | 572 path=path, |
573 up = up(path), | 573 up=up(path), |
574 fentries = filelist, | 574 fentries=filelist, |
575 dentries = dirlist) | 575 dentries=dirlist) |
576 | 576 |
577 def tags(self): | 577 def tags(self): |
578 cl = self.repo.changelog | 578 cl = self.repo.changelog |
579 mf = cl.read(cl.tip())[0] | 579 mf = cl.read(cl.tip())[0] |
580 | 580 |
588 "tag": k, | 588 "tag": k, |
589 "node": hex(n)} | 589 "node": hex(n)} |
590 parity = 1 - parity | 590 parity = 1 - parity |
591 | 591 |
592 yield self.t("tags", | 592 yield self.t("tags", |
593 manifest = hex(mf), | 593 manifest=hex(mf), |
594 entries = entries) | 594 entries=entries) |
595 | 595 |
596 def filediff(self, file, changeset): | 596 def filediff(self, file, changeset): |
597 n = bin(changeset) | 597 n = bin(changeset) |
598 cl = self.repo.changelog | 598 cl = self.repo.changelog |
599 p1 = cl.parents(n)[0] | 599 p1 = cl.parents(n)[0] |
602 | 602 |
603 def diff(**map): | 603 def diff(**map): |
604 yield self.diff(p1, n, file) | 604 yield self.diff(p1, n, file) |
605 | 605 |
606 yield self.t("filediff", | 606 yield self.t("filediff", |
607 file = file, | 607 file=file, |
608 filenode = hex(mf.get(file, nullid)), | 608 filenode=hex(mf.get(file, nullid)), |
609 node = changeset, | 609 node=changeset, |
610 rev = self.repo.changelog.rev(n), | 610 rev=self.repo.changelog.rev(n), |
611 parent = self.parents("filediffparent", | 611 parent=self.parents("filediffparent", |
612 cl.parents(n), cl.rev), | 612 cl.parents(n), cl.rev), |
613 diff = diff) | 613 diff=diff) |
614 | 614 |
615 # add tags to things | 615 # add tags to things |
616 # tags -> list of changesets corresponding to tags | 616 # tags -> list of changesets corresponding to tags |
617 # find tag, changeset, file | 617 # find tag, changeset, file |
618 | 618 |
641 uri = os.environ["REQUEST_URI"] | 641 uri = os.environ["REQUEST_URI"] |
642 if "?" in uri: uri = uri.split("?")[0] | 642 if "?" in uri: uri = uri.split("?")[0] |
643 url = "http://%s%s%s" % (os.environ["SERVER_NAME"], port, uri) | 643 url = "http://%s%s%s" % (os.environ["SERVER_NAME"], port, uri) |
644 | 644 |
645 self.t = templater(m, common_filters, | 645 self.t = templater(m, common_filters, |
646 {"url":url, | 646 {"url": url, |
647 "repo":self.reponame, | 647 "repo": self.reponame, |
648 "header":header, | 648 "header": header, |
649 "footer":footer, | 649 "footer": footer, |
650 }) | 650 }) |
651 | 651 |
652 if not args.has_key('cmd'): | 652 if not args.has_key('cmd'): |
653 args['cmd'] = [self.t.cache['default'],] | 653 args['cmd'] = [self.t.cache['default'],] |
654 | 654 |
825 if use_ipv6: | 825 if use_ipv6: |
826 return IPv6HTTPServer((address, port), hgwebhandler) | 826 return IPv6HTTPServer((address, port), hgwebhandler) |
827 else: | 827 else: |
828 return BaseHTTPServer.HTTPServer((address, port), hgwebhandler) | 828 return BaseHTTPServer.HTTPServer((address, port), hgwebhandler) |
829 | 829 |
830 def server(path, name, templates, address, port, use_ipv6 = False, | 830 def server(path, name, templates, address, port, use_ipv6=False, |
831 accesslog = sys.stdout, errorlog = sys.stderr): | 831 accesslog=sys.stdout, errorlog=sys.stderr): |
832 httpd = create_server(path, name, templates, address, port, use_ipv6, | 832 httpd = create_server(path, name, templates, address, port, use_ipv6, |
833 accesslog, errorlog) | 833 accesslog, errorlog) |
834 httpd.serve_forever() | 834 httpd.serve_forever() |
835 | 835 |
836 # This is a stopgap | 836 # This is a stopgap |
877 return default | 877 return default |
878 | 878 |
879 url = os.environ["REQUEST_URI"] + "/" + v | 879 url = os.environ["REQUEST_URI"] + "/" + v |
880 url = url.replace("//", "/") | 880 url = url.replace("//", "/") |
881 | 881 |
882 yield dict(author = get("web", "author", "unknown"), | 882 yield dict(author=get("web", "author", "unknown"), |
883 name = get("web", "name", v), | 883 name=get("web", "name", v), |
884 url = url, | 884 url=url, |
885 parity = parity, | 885 parity=parity, |
886 shortdesc = get("web", "description", "unknown"), | 886 shortdesc=get("web", "description", "unknown"), |
887 lastupdate = os.stat(os.path.join(r, ".hg", | 887 lastupdate=os.stat(os.path.join(r, ".hg", |
888 "00changelog.d")).st_mtime) | 888 "00changelog.d")).st_mtime) |
889 | 889 |
890 parity = 1 - parity | 890 parity = 1 - parity |
891 | 891 |
892 write(tmpl("index", entries = entries)) | 892 write(tmpl("index", entries=entries)) |