Module: Yamlr::Reader

Defined in:
lib/yamlr/reader.rb,
lib/yamlr/reader/node.rb,
lib/yamlr/reader/format.rb,
lib/yamlr/reader/parser.rb,
lib/yamlr/reader/builder.rb

Defined Under Namespace

Modules: Builder, Format, Node, Parser Classes: EmptyFileError, EmptyInputError, InvalidInputError

Class Method Summary collapse

Class Method Details

.read(input, options) ⇒ Object

parses file or string into Ruby Array, or Hash



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/yamlr/reader.rb', line 14

def self.read(input, options)
  raise Yamlr::Reader::EmptyInputError if input.is_a?(String) && input.strip.empty?
  raise Yamlr::Reader::InvalidInputError unless input.is_a?(String) or input.is_a?(File)
  input = File.exists?(input) ? IO.readlines(input) : input.split("\n")
  raise Yamlr::Reader::EmptyFileError if input.empty?
  hash = {}
  lineno = 0
  input.each {|line|
    parsed_hash    = Yamlr::Reader::Parser.parse(line, options, (lineno += 1))
    formatted_hash = Yamlr::Reader::Format.format(parsed_hash)
    Yamlr::Reader::Builder.build(hash, formatted_hash)
  }
  hash.delete(:adr)
  case
  when options[:list] then hash
  when !options[:list] then hash.delete(:lst) && (hash.length == 1) ? hash[1] : hash
  end
end