diff options
Diffstat (limited to 'pym/gentoolkit/formatters.py')
-rw-r--r-- | pym/gentoolkit/formatters.py | 223 |
1 files changed, 109 insertions, 114 deletions
diff --git a/pym/gentoolkit/formatters.py b/pym/gentoolkit/formatters.py index 097c186..84c66ee 100644 --- a/pym/gentoolkit/formatters.py +++ b/pym/gentoolkit/formatters.py @@ -13,123 +13,118 @@ import gentoolkit.pprinter as pp def format_options(options): - """Format module options. - - @type options: list - @param options: [('option 1', 'description 1'), ('option 2', 'des... )] - @rtype: str - @return: formatted options string - """ - - result = [] - twrap = TextWrapper(width=gentoolkit.CONFIG['termWidth']) - opts = (x[0] for x in options) - descs = (x[1] for x in options) - for opt, desc in zip(opts, descs): - twrap.initial_indent = pp.emph(opt.ljust(25)) - twrap.subsequent_indent = " " * 25 - result.append(twrap.fill(desc)) - return '\n'.join(result) - - -def format_filetype(path, fdesc, show_type=False, show_md5=False, - show_timestamp=False): - """Format a path for printing. - - @type path: str - @param path: the path - @type fdesc: list - @param fdesc: [file_type, timestamp, MD5 sum/symlink target] - file_type is one of dev, dir, obj, sym. - If file_type is dir, there is no timestamp or MD5 sum. - If file_type is sym, fdesc[2] is the target of the symlink. - @type show_type: bool - @param show_type: if True, prepend the file's type to the formatted string - @type show_md5: bool - @param show_md5: if True, append MD5 sum to the formatted string - @type show_timestamp: bool - @param show_timestamp: if True, append time-of-creation after pathname - @rtype: str - @return: formatted pathname with optional added information - """ - - ftype = fpath = stamp = md5sum = "" - if fdesc[0] == "obj": - ftype = "file" - fpath = path - stamp = format_timestamp(fdesc[1]) - md5sum = fdesc[2] - elif fdesc[0] == "dir": - ftype = "dir" - fpath = pp.path(path) - elif fdesc[0] == "sym": - ftype = "sym" - stamp = format_timestamp(fdesc[1]) - tgt = fdesc[2].split()[0] - if gentoolkit.CONFIG["piping"]: - fpath = path - else: - fpath = pp.path_symlink(path + " -> " + tgt) - elif fdesc[0] == "dev": - ftype = "dev" - fpath = path - else: - sys.stderr.write( - pp.error("%s has unknown type: %s" % (path, fdesc[0])) - ) - result = "" - if show_type: - result += "%4s " % ftype - result += fpath - if show_timestamp: - result += " " + stamp - if show_md5: - result += " " + md5sum - return result - + """Format module options. + + @type options: list + @param options: [('option 1', 'description 1'), ('option 2', 'des... )] + @rtype: str + @return: formatted options string + """ + + result = [] + twrap = TextWrapper(width=gentoolkit.CONFIG["termWidth"]) + opts = (x[0] for x in options) + descs = (x[1] for x in options) + for opt, desc in zip(opts, descs): + twrap.initial_indent = pp.emph(opt.ljust(25)) + twrap.subsequent_indent = " " * 25 + result.append(twrap.fill(desc)) + return "\n".join(result) + + +def format_filetype(path, fdesc, show_type=False, show_md5=False, show_timestamp=False): + """Format a path for printing. + + @type path: str + @param path: the path + @type fdesc: list + @param fdesc: [file_type, timestamp, MD5 sum/symlink target] + file_type is one of dev, dir, obj, sym. + If file_type is dir, there is no timestamp or MD5 sum. + If file_type is sym, fdesc[2] is the target of the symlink. + @type show_type: bool + @param show_type: if True, prepend the file's type to the formatted string + @type show_md5: bool + @param show_md5: if True, append MD5 sum to the formatted string + @type show_timestamp: bool + @param show_timestamp: if True, append time-of-creation after pathname + @rtype: str + @return: formatted pathname with optional added information + """ + + ftype = fpath = stamp = md5sum = "" + if fdesc[0] == "obj": + ftype = "file" + fpath = path + stamp = format_timestamp(fdesc[1]) + md5sum = fdesc[2] + elif fdesc[0] == "dir": + ftype = "dir" + fpath = pp.path(path) + elif fdesc[0] == "sym": + ftype = "sym" + stamp = format_timestamp(fdesc[1]) + tgt = fdesc[2].split()[0] + if gentoolkit.CONFIG["piping"]: + fpath = path + else: + fpath = pp.path_symlink(path + " -> " + tgt) + elif fdesc[0] == "dev": + ftype = "dev" + fpath = path + else: + sys.stderr.write(pp.error("%s has unknown type: %s" % (path, fdesc[0]))) + result = "" + if show_type: + result += "%4s " % ftype + result += fpath + if show_timestamp: + result += " " + stamp + if show_md5: + result += " " + md5sum + return result def format_timestamp(timestamp): - """Format a timestamp into, e.g., '2009-01-31 21:19:44' format""" - - return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(int(timestamp))) + """Format a timestamp into, e.g., '2009-01-31 21:19:44' format""" -class CpvValueWrapper: - """Format a cpv and linewrap pre-formatted values""" - - def __init__(self, cpv_width=None, width=None): - self.cpv_width = cpv_width - if width is None: - width = gentoolkit.CONFIG['termWidth'] - self.twrap = TextWrapper(width=width) - #self.init_indent = len(self.spacer) - - def _format_values(self, key, values): - """Format entry values ie. USE flags, keywords,... - - @type key: str - @param key: a pre-formatted cpv - @type values: list of pre-formatted strings - @param values: ['flag1', 'flag2',...] - @rtype: str - @return: formatted options string - """ - - result = [] - if self.cpv_width > 1: - _cpv = pp.cpv(key+'.'*(self.cpv_width-len(key))) - if not len(values): - return _cpv - self.twrap.initial_indent = _cpv - self.twrap.subsequent_indent = " " * (self.cpv_width+1) - else: - _cpv = pp.cpv(key+' ') - if not len(values): - return _cpv - self.twrap.initial_indent = _cpv - self.twrap.subsequent_indent = " " * (len(key)+1) - - result.append(self.twrap.fill(values)) - return '\n'.join(result) + return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(int(timestamp))) +class CpvValueWrapper: + """Format a cpv and linewrap pre-formatted values""" + + def __init__(self, cpv_width=None, width=None): + self.cpv_width = cpv_width + if width is None: + width = gentoolkit.CONFIG["termWidth"] + self.twrap = TextWrapper(width=width) + # self.init_indent = len(self.spacer) + + def _format_values(self, key, values): + """Format entry values ie. USE flags, keywords,... + + @type key: str + @param key: a pre-formatted cpv + @type values: list of pre-formatted strings + @param values: ['flag1', 'flag2',...] + @rtype: str + @return: formatted options string + """ + + result = [] + if self.cpv_width > 1: + _cpv = pp.cpv(key + "." * (self.cpv_width - len(key))) + if not len(values): + return _cpv + self.twrap.initial_indent = _cpv + self.twrap.subsequent_indent = " " * (self.cpv_width + 1) + else: + _cpv = pp.cpv(key + " ") + if not len(values): + return _cpv + self.twrap.initial_indent = _cpv + self.twrap.subsequent_indent = " " * (len(key) + 1) + + result.append(self.twrap.fill(values)) + return "\n".join(result) |