Source code for sts.util.tabular

# Copyright 2011-2013 Colin Scott
# Copyright 2011-2013 Andreas Wundsam
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

[docs]class Tabular(object):
[docs] def __init__(self, *cols): self.cols = cols
[docs] def show(self, data): cols = self.cols titles = [c[0] for c in cols] vals = [ [str(c[1](d)) if d else "*" for c in cols] for d in data ] lengths = [ reduce(lambda m, v: max(m, len(v[i])), vals + [ titles], 0) for i,c in enumerate(cols) ] l = 1 + reduce(lambda l, s: l + s + 3, lengths, 0) row = lambda r: "| " + " | ".join( ("%"+str(lengths[i])+"s") % v for i,v in enumerate(r)) + " |" print "-" * l print row(titles) print "-" * l for v in vals: print row(v) print "-" * l