# File lib/maruku/input/parse_block.rb, line 518
        def read_table(src)
                head = split_cells(src.shift_line).map{|s| md_el(:head_cell, parse_lines_as_span([s])) }
                        
                separator=split_cells(src.shift_line)

                align = separator.map { |s|  s =~ Sep
                        if $1 and $2 then :center elsif $2 then :right else :left end }
                                
                num_columns = align.size
                
                if head.size != num_columns
                        maruku_error "Table head does not have #{num_columns} columns: \n#{head.inspect}"
                        tell_user "I will ignore this table."
                        # XXX try to recover
                        return md_br()
                end
                                
                rows = []
                
                while src.cur_line && src.cur_line =~ /\|/
                        row = split_cells(src.shift_line).map{|s|
                                md_el(:cell, parse_lines_as_span([s]))}
                        if head.size != num_columns
                                maruku_error  "Row does not have #{num_columns} columns: \n#{row.inspect}"
                                tell_user "I will ignore this table."
                                # XXX try to recover
                                return md_br()
                        end
                        rows << row
                end

                children = (head+rows).flatten
                return md_el(:table, children, {:align => align})
        end