def column name, &block
      column = Column.new
      column.instance_eval(&block)

      @colspec << column.to_hash.merge({name: name})
    end
def column name, &block
      column = Column.new
      column.instance_eval(&block)

      @colspec << column.to_hash.merge({name: name})
    end
define a DSL for column specification
 - `name` is the name of the column
 - `block` contains two declarations, `process` and `check`, which are
   used, respectively, to make a cell into the desired data and to check
   whether the desired data is ok