comparison mercurial/hgweb/webutil.py @ 36885:c68e79dcf21c

hgweb: don't redundantly pass templater with requestcontext (API) The requestcontenxt has a ``tmpl`` attribute to access the templater. We don't need to pass the templater explicitly when passing a requestcontext instance. .. api:: Various helper functions in hgweb.webutil no longer accept a templater instance. Access the templater through the ``web`` argument instead. Differential Revision: https://phab.mercurial-scm.org/D2801
author Gregory Szorc <gregory.szorc@gmail.com>
date Sat, 10 Mar 2018 19:46:54 -0800
parents 3d60a22e27f5
children 563fd95a6efb
comparison
equal deleted inserted replaced
36884:ece242db5000 36885:c68e79dcf21c
387 'bookmarks': nodebookmarksdict(repo, node), 387 'bookmarks': nodebookmarksdict(repo, node),
388 'parent': lambda **x: parents(ctx), 388 'parent': lambda **x: parents(ctx),
389 'child': lambda **x: children(ctx), 389 'child': lambda **x: children(ctx),
390 } 390 }
391 391
392 def changelistentry(web, ctx, tmpl): 392 def changelistentry(web, ctx):
393 '''Obtain a dictionary to be used for entries in a changelist. 393 '''Obtain a dictionary to be used for entries in a changelist.
394 394
395 This function is called when producing items for the "entries" list passed 395 This function is called when producing items for the "entries" list passed
396 to the "shortlog" and "changelog" templates. 396 to the "shortlog" and "changelog" templates.
397 ''' 397 '''
398 repo = web.repo 398 repo = web.repo
399 rev = ctx.rev() 399 rev = ctx.rev()
400 n = ctx.node() 400 n = ctx.node()
401 showtags = showtag(repo, tmpl, 'changelogtag', n) 401 showtags = showtag(repo, web.tmpl, 'changelogtag', n)
402 files = listfilediffs(tmpl, ctx.files(), n, web.maxfiles) 402 files = listfilediffs(web.tmpl, ctx.files(), n, web.maxfiles)
403 403
404 entry = commonentry(repo, ctx) 404 entry = commonentry(repo, ctx)
405 entry.update( 405 entry.update(
406 allparents=lambda **x: parents(ctx), 406 allparents=lambda **x: parents(ctx),
407 parent=lambda **x: parents(ctx, rev - 1), 407 parent=lambda **x: parents(ctx, rev - 1),
415 if 'node' in req.req.qsparams: 415 if 'node' in req.req.qsparams:
416 return templatefilters.revescape(req.req.qsparams['node']) 416 return templatefilters.revescape(req.req.qsparams['node'])
417 else: 417 else:
418 return short(ctx.node()) 418 return short(ctx.node())
419 419
420 def changesetentry(web, req, tmpl, ctx): 420 def changesetentry(web, req, ctx):
421 '''Obtain a dictionary to be used to render the "changeset" template.''' 421 '''Obtain a dictionary to be used to render the "changeset" template.'''
422 422
423 showtags = showtag(web.repo, tmpl, 'changesettag', ctx.node()) 423 showtags = showtag(web.repo, web.tmpl, 'changesettag', ctx.node())
424 showbookmarks = showbookmark(web.repo, tmpl, 'changesetbookmark', 424 showbookmarks = showbookmark(web.repo, web.tmpl, 'changesetbookmark',
425 ctx.node()) 425 ctx.node())
426 showbranch = nodebranchnodefault(ctx) 426 showbranch = nodebranchnodefault(ctx)
427 427
428 files = [] 428 files = []
429 parity = paritygen(web.stripecount) 429 parity = paritygen(web.stripecount)
430 for blockno, f in enumerate(ctx.files()): 430 for blockno, f in enumerate(ctx.files()):
431 template = 'filenodelink' if f in ctx else 'filenolink' 431 template = 'filenodelink' if f in ctx else 'filenolink'
432 files.append(tmpl(template, 432 files.append(web.tmpl(template,
433 node=ctx.hex(), file=f, blockno=blockno + 1, 433 node=ctx.hex(), file=f, blockno=blockno + 1,
434 parity=next(parity))) 434 parity=next(parity)))
435 435
436 basectx = basechangectx(web.repo, req) 436 basectx = basechangectx(web.repo, req)
437 if basectx is None: 437 if basectx is None:
438 basectx = ctx.p1() 438 basectx = ctx.p1()
439 439
440 style = web.config('web', 'style') 440 style = web.config('web', 'style')
441 if 'style' in req.req.qsparams: 441 if 'style' in req.req.qsparams:
442 style = req.req.qsparams['style'] 442 style = req.req.qsparams['style']
443 443
444 diff = diffs(web, tmpl, ctx, basectx, None, style) 444 diff = diffs(web, ctx, basectx, None, style)
445 445
446 parity = paritygen(web.stripecount) 446 parity = paritygen(web.stripecount)
447 diffstatsgen = diffstatgen(ctx, basectx) 447 diffstatsgen = diffstatgen(ctx, basectx)
448 diffstats = diffstat(tmpl, ctx, diffstatsgen, parity) 448 diffstats = diffstat(web.tmpl, ctx, diffstatsgen, parity)
449 449
450 return dict( 450 return dict(
451 diff=diff, 451 diff=diff,
452 symrev=symrevorshortnode(req, ctx), 452 symrev=symrevorshortnode(req, ctx),
453 basenode=basectx.hex(), 453 basenode=basectx.hex(),
464 for f in files[:max]: 464 for f in files[:max]:
465 yield tmpl('filedifflink', node=hex(node), file=f) 465 yield tmpl('filedifflink', node=hex(node), file=f)
466 if len(files) > max: 466 if len(files) > max:
467 yield tmpl('fileellipses') 467 yield tmpl('fileellipses')
468 468
469 def diffs(web, tmpl, ctx, basectx, files, style, linerange=None, 469 def diffs(web, ctx, basectx, files, style, linerange=None,
470 lineidprefix=''): 470 lineidprefix=''):
471 471
472 def prettyprintlines(lines, blockno): 472 def prettyprintlines(lines, blockno):
473 for lineno, l in enumerate(lines, 1): 473 for lineno, l in enumerate(lines, 1):
474 difflineno = "%d.%d" % (blockno, lineno) 474 difflineno = "%d.%d" % (blockno, lineno)
478 ltype = "difflineminus" 478 ltype = "difflineminus"
479 elif l.startswith('@'): 479 elif l.startswith('@'):
480 ltype = "difflineat" 480 ltype = "difflineat"
481 else: 481 else:
482 ltype = "diffline" 482 ltype = "diffline"
483 yield tmpl(ltype, 483 yield web.tmpl(
484 line=l, 484 ltype,
485 lineno=lineno, 485 line=l,
486 lineid=lineidprefix + "l%s" % difflineno, 486 lineno=lineno,
487 linenumber="% 8s" % difflineno) 487 lineid=lineidprefix + "l%s" % difflineno,
488 linenumber="% 8s" % difflineno)
488 489
489 repo = web.repo 490 repo = web.repo
490 if files: 491 if files:
491 m = match.exact(repo.root, repo.getcwd(), files) 492 m = match.exact(repo.root, repo.getcwd(), files)
492 else: 493 else:
507 s1, l1, s2, l2 = hunkrange 508 s1, l1, s2, l2 = hunkrange
508 if not mdiff.hunkinrange((s2, l2), linerange): 509 if not mdiff.hunkinrange((s2, l2), linerange):
509 continue 510 continue
510 lines.extend(hunklines) 511 lines.extend(hunklines)
511 if lines: 512 if lines:
512 yield tmpl('diffblock', parity=next(parity), blockno=blockno, 513 yield web.tmpl('diffblock', parity=next(parity), blockno=blockno,
513 lines=prettyprintlines(lines, blockno)) 514 lines=prettyprintlines(lines, blockno))
514 515
515 def compare(tmpl, context, leftlines, rightlines): 516 def compare(tmpl, context, leftlines, rightlines):
516 '''Generator function that provides side-by-side comparison data.''' 517 '''Generator function that provides side-by-side comparison data.'''
517 518
518 def compline(type, leftlineno, leftline, rightlineno, rightline): 519 def compline(type, leftlineno, leftline, rightlineno, rightline):