Class: CSV::FieldsConverter (Ruby 2.7.2)
Description: Class : CSV::FieldsConverter - Ruby 2.7.2

### Home Classes Methods

### In Files

- csv/fields_converter.rb

### Parent

Object

### Methods

- ::new
- #add_converter
- #convert
- #each
- #empty?

### Included Modules

- Enumerable

### Class/Module Index

Quicksearch

- CSV
- CSV::DeleteSuffix
- CSV::FieldsConverter
- CSV::MalformedCSVError
- CSV::MatchP
- CSV::Parser
- CSV::Parser::InputsScanner
- CSV::Parser::InvalidEncoding
- CSV::Parser::Scanner
- CSV::Parser::UnoptimizedStringIO
- CSV::Row
- CSV::Table
- CSV::Writer
- Object

No matching classes.

# CSV::FieldsConverter

Note: Don’t use this class directly. This is an internal class.

### Public Class Methods

new(options={}) click to toggle source

A CSV::FieldsConverter is a data structure for storing the fields converter properties to be passed as a parameter when parsing a new file (e.g. CSV::Parser.new(@io, parser_options))

                   # File csv/fields_converter.rb, line 13
    def initialize(options={})
      @converters = []
      @nil_value = options[:nil_value]
      @empty_value = options[:empty_value]
      @empty_value_is_empty_string = (@empty_value == "")
      @accept_nil = options[:accept_nil]
      @builtin_converters = options[:builtin_converters]
      @need_static_convert = need_static_convert?
    end

### Public Instance Methods

add_converter(name=nil, &converter) click to toggle source

                   # File csv/fields_converter.rb, line 23
    def add_converter(name=nil, &converter)
      if name.nil?  # custom converter
        @converters << converter
      else          # named converter
        combo = @builtin_converters[name]
        case combo
        when Array  # combo converter
          combo.each do |sub_name|
            add_converter(sub_name)
          end
        else        # individual named converter
          @converters << combo
        end
      end
    end

convert(fields, headers, lineno) click to toggle source

                   # File csv/fields_converter.rb, line 47
    def convert(fields, headers, lineno)
      return fields unless need_convert?

      fields.collect.with_index do |field, index|
        if field.nil?
          field = @nil_value
        elsif field.empty?
          field = @empty_value unless @empty_value_is_empty_string
        end
        @converters.each do |converter|
          break if field.nil? and @accept_nil
          if converter.arity == 1  # straight field converter
            field = converter[field]
          else                     # FieldInfo converter
            if headers
              header = headers[index]
            else
              header = nil
            end
            field = converter[field, FieldInfo.new(index, lineno, header)]
          end
          break unless field.is_a?(String)  # short-circuit pipeline for speed
        end
        field  # final state of each field, converted or original
      end
    end

each(&block) click to toggle source

                   # File csv/fields_converter.rb, line 39
    def each(&block)
      @converters.each(&block)
    end

empty?() click to toggle source

                   # File csv/fields_converter.rb, line 43
    def empty?
      @converters.empty?
    end