def filename name, _config = {}
      arr = File.open(name,"r").read.split("\n")
      lines = []
      sep = _config[:separator] || _config[:delimiter] || '\t'
      arr.each { |l| lines << l.split(sep) }
      cc = _config[:columns]
      if cc.is_a? Array
        columns(cc)
        text(lines)
      elsif cc
        # cc is true, use first row as column names
        columns(lines[0])
        text(lines[1..-1])
      else
        # cc is false - no columns
        # XXX since columns() is not called, so chash is not cleared.
        _init_model lines[0]
        text(lines)
      end
    end
def filename name, _config = {}
      arr = File.open(name,"r").read.split("\n")
      lines = []
      sep = _config[:separator] || _config[:delimiter] || '\t'
      arr.each { |l| lines << l.split(sep) }
      cc = _config[:columns]
      if cc.is_a? Array
        columns(cc)
        text(lines)
      elsif cc
        # cc is true, use first row as column names
        columns(lines[0])
        text(lines[1..-1])
      else
        # cc is false - no columns
        # XXX since columns() is not called, so chash is not cleared.
        _init_model lines[0]
        text(lines)
      end
    end
Takes the name of a file containing delimited data
  and load it into the table.
 This method will load and split the file into the table.
 @param name is the file name
 @param config is a hash containing:
   - :separator - field separator, default is TAB
   - :columns  - array of column names
                or true - first row is column names
                or false - no columns.

 == NOTE
   if columns is not mentioned, then it defaults to false

 == Example

     table = Table.new ...
     table.filename 'contacts.tsv', :separator => '|', :columns => true