Module: Philiprehberger::CsvBuilder

Defined in:
lib/philiprehberger/csv_builder.rb,
lib/philiprehberger/csv_builder/column.rb,
lib/philiprehberger/csv_builder/builder.rb,
lib/philiprehberger/csv_builder/version.rb

Defined Under Namespace

Classes: Builder, Column, Error, ValidationError

Constant Summary collapse

VERSION =
'0.10.0'

Class Method Summary collapse

Class Method Details

.build(records, delimiter: ',', quote_char: '"', row_sep: "\n", bom: false, encoding: 'UTF-8', empty_value: '') {|builder| ... } ⇒ Builder

Build a CSV from records using a declarative DSL

Parameters:

  • records (Array) —

    the source records

  • delimiter (String) (defaults to: ',') —

    the column separator (default: ",")

  • quote_char (String) (defaults to: '"') —

    the quote character (default: '"')

  • row_sep (String) (defaults to: "\n") —

    the line separator (default: "\n")

  • bom (Boolean) (defaults to: false) —

    prepend UTF-8 BOM for Excel compatibility (default: false)

  • encoding (String) (defaults to: 'UTF-8') —

    output encoding name (default: "UTF-8")

  • empty_value (String) (defaults to: '') —

    string used to represent nil/empty values (default: "")

Yields:

  • (builder) —

    the builder instance for defining columns

Yield Parameters:

Returns:

  • (Builder) —

    the configured builder

Raises:

  • (Error) —

    if no block is given



25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/philiprehberger/csv_builder.rb', line 25

def self.build(records, delimiter: ',', quote_char: '"', row_sep: "\n",
               bom: false, encoding: 'UTF-8', empty_value: '', &block)
  raise Error, 'A block is required' unless block

  builder = Builder.new(
    records,
    delimiter: delimiter, quote_char: quote_char, row_sep: row_sep,
    bom: bom, encoding: encoding, empty_value: empty_value
  )
  builder.instance_eval(&block)
  builder
end

.psv(records, **options) {|builder| ... } ⇒ Builder

Shorthand for pipe-separated output

Parameters:

  • records (Array) —

    the source records

  • options (Hash) —

    additional options passed to .build

Yields:

  • (builder) —

    the builder instance for defining columns

Returns:

  • (Builder) —

    the configured builder



54
55
56
# File 'lib/philiprehberger/csv_builder.rb', line 54

def self.psv(records, **options, &)
  build(records, **options, delimiter: '|', &)
end

.tsv(records, **options) {|builder| ... } ⇒ Builder

Shorthand for tab-separated output

Parameters:

  • records (Array) —

    the source records

  • options (Hash) —

    additional options passed to .build

Yields:

  • (builder) —

    the builder instance for defining columns

Returns:

  • (Builder) —

    the configured builder



44
45
46
# File 'lib/philiprehberger/csv_builder.rb', line 44

def self.tsv(records, **options, &)
  build(records, **options, delimiter: "\t", &)
end