~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/log.py

  • Committer: Aaron Bentley
  • Date: 2007-01-17 19:43:23 UTC
  • mto: This revision was merged to the branch mainline in revision 2269.
  • Revision ID: abentley@panoramicfeedback.com-20070117194323-xe0mbw9tlkl65enx
Implement log options using RegistryOption

Show diffs side-by-side

added added

removed removed

Lines of Context:
54
54
from itertools import izip
55
55
import re
56
56
 
57
 
from bzrlib import symbol_versioning
 
57
from bzrlib import(
 
58
    registry,
 
59
    symbol_versioning,
 
60
    )
58
61
import bzrlib.errors as errors
59
62
from bzrlib.symbol_versioning import deprecated_method, zero_eleven
60
63
from bzrlib.trace import mutter
461
464
    lf = LineLogFormatter(None)
462
465
    return lf.log_string(None, rev, max_chars)
463
466
 
464
 
FORMATTERS = {
465
 
              'long': LongLogFormatter,
466
 
              'short': ShortLogFormatter,
467
 
              'line': LineLogFormatter,
468
 
              }
 
467
 
 
468
class LogFormatterRegistry(registry.Registry):
 
469
    """Registry for log formatters"""
 
470
 
 
471
    def make_formatter(self, name, *args, **kwargs):
 
472
        """Construct a formatter from arguments.
 
473
 
 
474
        :param name: Name of the formatter to construct.  'short', 'long' and
 
475
            'line' are built-in.
 
476
        """
 
477
        return self.get(name)(*args, **kwargs)
 
478
 
 
479
    def get_default(self, branch):
 
480
        return self.get(branch.get_config().log_format())
 
481
 
 
482
 
 
483
log_formatter_registry = LogFormatterRegistry()
 
484
 
 
485
 
 
486
log_formatter_registry.register('short', ShortLogFormatter,
 
487
                                'Moderately short log format')
 
488
log_formatter_registry.register('long', LongLogFormatter,
 
489
                                'Detailed log format')
 
490
log_formatter_registry.register('line', LineLogFormatter,
 
491
                                'Log format with one line per revision')
 
492
 
469
493
 
470
494
def register_formatter(name, formatter):
471
 
    FORMATTERS[name] = formatter
 
495
    log_formatter_registry.register(name, formatter)
 
496
 
472
497
 
473
498
def log_formatter(name, *args, **kwargs):
474
499
    """Construct a formatter from arguments.
478
503
    """
479
504
    from bzrlib.errors import BzrCommandError
480
505
    try:
481
 
        return FORMATTERS[name](*args, **kwargs)
 
506
        return log_formatter_registry.make_formatter(name, *args, **kwargs)
482
507
    except KeyError:
483
508
        raise BzrCommandError("unknown log formatter: %r" % name)
484
509
 
 
510
 
485
511
def show_one_log(revno, rev, delta, verbose, to_file, show_timezone):
486
512
    # deprecated; for compatibility
487
513
    lf = LongLogFormatter(to_file=to_file, show_timezone=show_timezone)