Method: Flex::Utils#parse_source

Defined in:
lib/flex/utils.rb

#parse_source(source) ⇒ Object

Raises:



5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/flex/utils.rb', line 5

def parse_source(source)
  return unless source
  parsed = case source
           when Hash              then keyfy(:to_s, source)
           when /^\s*\{.+\}\s*$/m then source
           when String            then YAML.load(source)
           else raise ArgumentError, "expected a String or Hash instance, got #{source.inspect}"
           end
  raise ArgumentError, "the source does not decode to an Array, Hash or String, got #{parsed.inspect}" \
        unless parsed.is_a?(Hash) || parsed.is_a?(Array) || parsed.is_a?(String)
  parsed
end