def pad(self, rows): ''' Pad a series of column values for aligned display. ''' widths = [] for i in range(len(rows[0])): widths.append(max([len(r[i]) for r in rows])) retn = [] for row in rows: retn.append([r.rjust(size) for r, size in s_common.iterzip(row, widths)]) return retn
def _norm_list(self, valu, oldval=None): opts = {} subs = {} retn = [] vlen = len(valu) if vlen < self.fsize: self._raiseBadValu(valu, mesg='Expected %d fields and got %d' % (self.fsize, len(valu))) for k, v in valu[self.fsize:]: opts[k] = v vals = valu[:self.fsize] for v, (name, tname) in s_common.iterzip(vals, self.fields): # FIXME - this if/else is a artifact of typelib/datamodel separation if self.prop: if self.tlib.isTufoProp(tname): norm, ssubs = self._getPropNorm(tname, v) else: norm, ssubs = self.tlib.getTypeNorm(tname, v) else: norm, ssubs = self.tlib.getTypeNorm(tname, v) subs[name] = norm for subkey, subval in ssubs.items(): subs[name + ':' + subkey] = subval retn.append(norm) for name, tname in self.optfields: v = opts.get(name) if v is None: continue norm, ssubs = self.tlib.getTypeNorm(tname, v) subs[name] = norm for subkey, subval in ssubs.items(): subs[name + ':' + subkey] = subval retn.append((name, norm)) return s_common.guid(retn), subs
def _norm_fields(self, valu): fields = self._get_fields() if len(valu) != len(fields): self._raiseBadValu(valu, mesg='field count != %d' % (len(fields),)) vals = [] subs = {} for valu, (name, item) in s_common.iterzip(valu, fields): norm, fubs = item.norm(valu) vals.append(norm) subs[name] = norm for fubk, fubv in fubs.items(): subs[name + ':' + fubk] = fubv return vals, subs
def _zipvals(self, vals): return s_common.iterzip(vals, self._get_fields())