def self.parse_colspecs records
records = records.delete ' ' if records.include? ' '
if records == records.to_i.to_s
return ::Array.new(records.to_i) { { 'width' => 1 } }
end
specs = []
records.split(',', -1).each {|record|
if record.empty?
specs << { 'width' => 1 }
elsif (m = ColumnSpecRx.match(record))
spec = {}
if m[2]
colspec, rowspec = m[2].split '.'
if !colspec.nil_or_empty? && TableCellHorzAlignments.key?(colspec)
spec['halign'] = TableCellHorzAlignments[colspec]
end
if !rowspec.nil_or_empty? && TableCellVertAlignments.key?(rowspec)
spec['valign'] = TableCellVertAlignments[rowspec]
end
end
spec['width'] = (m[3] ? m[3].to_i : 1)
if m[4] && TableCellStyles.key?(m[4])
spec['style'] = TableCellStyles[m[4]]
end
if m[1]
1.upto(m[1].to_i) {
specs << spec.dup
}
else
specs << spec
end
end
}
specs
end