Align columns: Difference between revisions

m
no edit summary
mNo edit summary
Line 324:
fieldsbyrow = [line.strip().split('$') for line in infile]
# pad to same number of fields per row
maxfields = max(len(recordrow) for recordrow in fieldsbyrow)
fieldsbyrow = [row + ['']*(maxfields - len(row))
for row in fieldsbyrow]
Line 394:
justifier = J2justifier[justification]
fieldsbyrecordfieldsbyrow = infile.map {|line| line.strip.split('$')}
# pad to same number of fields per record
maxfields = fieldsbyrecordfieldsbyrow.map {|recordrow| recordrow.length}.max
fieldsbyrecord = fieldsbyrecordfieldsbyrow.map! {|fieldsrow|
fieldsrow + ['']*(maxfields - fieldsrow.length)
}
# rotate
fieldsbycolumn = fieldsbyrecord.transpose
# calculate max fieldwidth per column
colwidths = fieldsbycolumnfieldsbyrow.transpose.map {|column|
column.map {|field| field.length}.max
}
# pad fields in columns to colwidth with spaces
fieldsbyrow.map! {|row|
fieldsbycolumn = colwidths.zip(fieldsbycolumn).map {|width, column|
columnrow.zip(colwidths).map {|field|, justifier.bind(field)[width]}|
justifier.bind(field)[width]
}
}
# rotate again
fieldsbyrecord = fieldsbycolumn.transpose
fieldsbyrecordfieldsbyrow.map {|recordrow| recordrow.join(" ")}.join("\n")
end
 
Anonymous user