Module: Fibrio

Defined in:
lib/fibrio.rb,
lib/fibrio/errors.rb,
lib/fibrio/source.rb,
lib/fibrio/stream.rb,
lib/fibrio/version.rb,
lib/fibrio/parsers/csv.rb,
lib/fibrio/parsers/base.rb,
lib/fibrio/parsers/json.rb,
lib/fibrio/parsers/ndjson.rb

Defined Under Namespace

Modules: Parsers Classes: Error, ParseError, Source, Stream, UnknownFormatError

Constant Summary collapse

FORMAT_PARSERS =
{
  json: Parsers::JSON,
  ndjson: Parsers::NDJSON,
  csv: Parsers::CSV
}.freeze
VERSION =
'0.1.0'

Class Method Summary collapse

Class Method Details

.open(input, format:, **options) ⇒ Stream

Parameters:

  • input (String, IO)
  • format (Symbol)
  • options (Hash)

Returns:



23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/fibrio.rb', line 23

def self.open(input, format:, **options)
  source = Source.build(input)
  parser = parser_for(format).new(source, **options)
  stream = Stream.new(parser)

  return stream unless block_given?

  begin
    yield stream
  ensure
    stream.close
  end
end

.parser_for(format) ⇒ Class

Parameters:

  • format (Symbol)

Returns:

  • (Class)


39
40
41
42
43
# File 'lib/fibrio.rb', line 39

def self.parser_for(format)
  FORMAT_PARSERS.fetch(format.to_sym)
rescue KeyError
  raise UnknownFormatError, "unknown format: #{format.inspect}"
end