Sha256: e934a518e22d3c3443d910cc4a10cba275c671f11501fe1cc6ffac933e141c8b

Contents?: true

Size: 1.08 KB

Versions: 13

Compression:

Stored size: 1.08 KB

Contents

module IOStreams
  class Tabular
    module Parser
      # For parsing a single line of Pipe-separated values
      class Psv < Base
        # Returns [Array<String>] the header row.
        # Returns nil if the row is blank.
        def parse_header(row)
          return row if row.is_a?(::Array)

          unless row.is_a?(String)
            raise(IOStreams::Errors::InvalidHeader, "Format is :psv. Invalid input header: #{row.class.name}")
          end

          row.split('|')
        end

        # Returns [Array] the parsed PSV line
        def parse(row)
          return row if row.is_a?(::Array)

          raise(IOStreams::Errors::TypeMismatch, "Format is :psv. Invalid input: #{row.class.name}") unless row.is_a?(String)

          row.split('|')
        end

        # Return the supplied array as a single line JSON string.
        def render(row, header)
          array          = header.to_array(row)
          cleansed_array = array.collect do |i|
            i.is_a?(String) ? i.tr('|', ':') : i
          end
          cleansed_array.join('|')
        end
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
iostreams-0.20.3 lib/io_streams/tabular/parser/psv.rb
iostreams-0.20.2 lib/io_streams/tabular/parser/psv.rb
iostreams-0.20.1 lib/io_streams/tabular/parser/psv.rb
iostreams-0.20.0 lib/io_streams/tabular/parser/psv.rb
iostreams-0.19.0 lib/io_streams/tabular/parser/psv.rb
iostreams-0.18.0 lib/io_streams/tabular/parser/psv.rb
iostreams-0.17.3 lib/io_streams/tabular/parser/psv.rb
iostreams-0.17.2 lib/io_streams/tabular/parser/psv.rb
iostreams-0.17.1 lib/io_streams/tabular/parser/psv.rb
iostreams-0.17.0 lib/io_streams/tabular/parser/psv.rb
iostreams-0.16.2 lib/io_streams/tabular/parser/psv.rb
iostreams-0.16.1 lib/io_streams/tabular/parser/psv.rb
iostreams-0.16.0 lib/io_streams/tabular/parser/psv.rb