Sha256: 0ed909055a1630fb0c167a362886e8ddd933540062d61d4af932a1cf4349b504
Contents?: true
Size: 1.34 KB
Versions: 2
Compression:
Stored size: 1.34 KB
Contents
require 'csv' require 'honey_format/sanitize' require 'honey_format/rows' require 'honey_format/header' module HoneyFormat # Represents CSV. class CSV # @return [CSV] a new instance of CSV. # @param [String] csv string. # @param [Array] valid_columns valid array of symbols representing valid columns. # @param [Array] header optional argument for CSV header # @raise [MissingCSVHeaderError] raised when header is missing (empty or nil). # @raise [MissingCSVHeaderColumnError] raised when header column is missing. # @raise [UnknownCSVHeaderColumnError] raised when column is not in valid list. def initialize(csv, delimiter: ',', header: nil, valid_columns: :all) csv = ::CSV.parse(csv, col_sep: delimiter) @csv_body = csv @header = Header.new(header || csv.shift, valid: valid_columns) end # @return [Array] of strings for sanitized header. def header @header.column_names end # @return [Array] of column identifiers. def columns @header.columns end # @return [Array] of rows. # @raise [InvalidRowLengthError] raised when there are more row elements longer than columns def rows @rows ||= Rows.new(@csv_body, columns).to_a end # @yield [row] block to receive the row. def each_row rows.each { |row| yield(row) } end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
honey_format-0.2.1 | lib/honey_format/csv.rb |
honey_format-0.2.0 | lib/honey_format/csv.rb |