def env_array_row(layout)
l = Scanner.new(layout)
r = Tr.new
first_column = true
vlined = l.check(/\|/)
until l.eos?
c = l.scan(/./)
if c=='|'
r << Td.new if vlined
vlined = true
next
else
vlined = false
case c
when 'r', 'l', 'c'
when '@'
r << parse_into(l.scan_any, Td.new)
next
end
if first_column
first_column = false
else
raise ParseError.new("Need more column.", @scanner.matched.to_s) unless @scanner.scan(/&/)
end
r << push_container(Td.new) do |td|
td << parse_to_element(true) until @scanner.peek_command=="end" || @scanner.check(/(&|\\\\)/) || @scanner.eos?
end
end
end
r << Td.new if vlined
raise ParseError.new("Too many column.") if @scanner.check(/&/)
r
end