Source code for tagrenamer.app.output

# -*- coding: utf-8 -*-
"""
Combined output and logging facility with level support.
"""
from datetime import datetime


[docs] def runtime_error(message): """Stop the program using a prefixed RuntimeError.""" output = Output() output.runtime_error(message)
[docs] class Output: """ Combined output and logging facility with level support. """ def __init__(self): """Initialize the logger.""" self.debuglevel = False self.quiet = False
[docs] def set_debuglevel(self, level): """Set the level of debugging.""" self.debuglevel = level
[docs] def set_quiet(self, quiet): """Enable or disable quiet mode.""" self.quiet = quiet
[docs] def runtime_error(self, message): """Stop the program using a prefixed RuntimeError.""" error = [''] for line in message.split("\n"): error.append('ERROR: ' + line) error.append('') raise RuntimeError("\n".join(error))
[docs] def log(self, message='', context='', level=0): """Log a string at the given indentation level.""" if not self.debuglevel: return # Skip messages with a higher debuglevel level. if level+1 > self.debuglevel: return # Generate the indentation spacing. indent = [] level = (level * 4) + 2 for x in range(0, level): indent.append(' ') # Generate the prefix string. now = datetime.now() prefix = [] prefix.append('%s ' % now.strftime('%H:%M:%S')) if context: context = '<%s> ' % context prefix.append(context.ljust(5)) prefix.append(''.join(indent)) prefix = ''.join(prefix) # Delegate output writing to write(): if message: for line in message.split("\n"): print(prefix + line) else: print(prefix)
[docs] def write(self, message): """Print the given message when not-quiet.""" if self.quiet: return print(message)