diff mercurial/commands.py @ 1909:37b9f80a5fbb

add doc comments to template code.
author Vadim Gelfer <vadim.gelfer@gmail.com>
date Mon, 27 Feb 2006 15:07:25 -0800
parents be71c04d62c0
children e2fe1953f417
line wrap: on
line diff
--- a/mercurial/commands.py	Mon Feb 27 13:25:40 2006 -0800
+++ b/mercurial/commands.py	Mon Feb 27 15:07:25 2006 -0800
@@ -338,15 +338,20 @@
     return user
 
 class changeset_templater(object):
+    '''use templater module to format changeset information.'''
+
     def __init__(self, ui, repo, mapfile):
         self.t = templater.templater(mapfile, templater.common_filters)
         self.ui = ui
         self.repo = repo
 
     def use_template(self, t):
+        '''set template string to use'''
         self.t.cache['template'] = t
 
     def write(self, thing):
+        '''write expanded template.
+        uses in-order recursive traverse of iterators.'''
         for t in thing:
             if hasattr(t, '__iter__'):
                 self.write(t)
@@ -354,7 +359,7 @@
                 self.ui.write(t)
 
     def show(self, rev=0, changenode=None, brinfo=None):
-        """show a single changeset or file revision"""
+        '''show a single changeset or file revision'''
         log = self.repo.changelog
         if changenode is None:
             changenode = log.node(rev)
@@ -364,6 +369,25 @@
         changes = log.read(changenode)
 
         def showlist(name, values, plural=None, **args):
+            '''expand set of values.
+            name is name of key in template map.
+            values is list of strings or dicts.
+            plural is plural of name, if not simply name + 's'.
+
+            expansion works like this, given name 'foo'.
+
+            if values is empty, expand 'no_foos'.
+
+            if 'foo' not in template map, return values as a string,
+            joined by space.
+
+            expand 'start_foos'.
+
+            for each value, expand 'foo'. if 'last_foo' in template
+            map, expand it instead of 'foo' for last key.
+
+            expand 'end_foos'.
+            '''
             if plural: names = plural
             else: names = name + 's'
             if not values:
@@ -371,13 +395,13 @@
                 if noname in self.t:
                     yield self.t(noname, **args)
                 return
-            vargs = args.copy()
             if name not in self.t:
                 yield ' '.join(values)
                 return
             startname = 'start_' + names
             if startname in self.t:
                 yield self.t(startname, **args)
+            vargs = args.copy()
             def one(v, tag=name):
                 try:
                     vargs.update(v)
@@ -464,12 +488,14 @@
             raise util.Abort(_('%s: %s') % (self.t.mapfile, inst.args[0]))
 
 class changeset_printer(object):
+    '''show changeset information when templating not requested.'''
+
     def __init__(self, ui, repo):
         self.ui = ui
         self.repo = repo
 
     def show(self, rev=0, changenode=None, brinfo=None):
-        """show a single changeset or file revision"""
+        '''show a single changeset or file revision'''
         log = self.repo.changelog
         if changenode is None:
             changenode = log.node(rev)
@@ -530,6 +556,9 @@
         self.ui.status("\n")
 
 def show_changeset(ui, repo, opts):
+    '''show one changeset.  uses template or regular display.  caller
+    can pass in 'map_file' and 'template' options in opts.'''
+
     tmpl = opts.get('template')
     if tmpl:
         tmpl = templater.parsestring(tmpl, quoted=False)