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
|