class Travis::Conditions::V1::Data
Constants
- QUOTE
Public Class Methods
new(data)
click to toggle source
Calls superclass method
# File lib/travis/conditions/v1/data.rb, line 7 def initialize(data) super(normalize(data)) end
Public Instance Methods
[](key)
click to toggle source
# File lib/travis/conditions/v1/data.rb, line 11 def [](key) data[key&.to_sym] end
env(key)
click to toggle source
# File lib/travis/conditions/v1/data.rb, line 15 def env(key) value = data.fetch(:env, {})[key&.to_sym] value = value.gsub(/^(["'])(.*)\1$/, '\2') if value.respond_to?(:gsub) value end
Private Instance Methods
cast(obj)
click to toggle source
# File lib/travis/conditions/v1/data.rb, line 67 def cast(obj) case obj.to_s.downcase when 'false' false when 'true' true else obj end end
error(arg)
click to toggle source
# File lib/travis/conditions/v1/data.rb, line 84 def error(arg) ArgumentError.new("Invalid env data (#{arg.inspect} given)") end
normalize(data)
click to toggle source
# File lib/travis/conditions/v1/data.rb, line 23 def normalize(data) data = symbolize(data) data[:env] = normalize_env(data[:env]) data end
normalize_env(env)
click to toggle source
TODO move this to travis-env_vars
# File lib/travis/conditions/v1/data.rb, line 42 def normalize_env(env) symbolize(to_h(env || {})) rescue TypeError raise error(env) end
parse(str)
click to toggle source
# File lib/travis/conditions/v1/data.rb, line 59 def parse(str) vars = ShVars::String.new(str).parse vars.map { |lft, rgt| [lft, cast(unquote(rgt))] } rescue ShVars::ParseError puts "[travis-conditions] Cannot normalize env var (#{str.inspect} given)" [] end
symbolize(obj)
click to toggle source
# File lib/travis/conditions/v1/data.rb, line 29 def symbolize(obj) case obj when Hash obj.map { |key, value| [key&.to_sym, symbolize(value)] }.to_h when Array obj.map { |obj| symbolize(obj) } else obj end end
to_h(obj)
click to toggle source
# File lib/travis/conditions/v1/data.rb, line 48 def to_h(obj) case obj when Hash obj when Array obj.map { |obj| to_h(obj).to_a }.flatten(1).to_h else parse(obj.to_s.strip) end end
unquote(str)
click to toggle source
# File lib/travis/conditions/v1/data.rb, line 80 def unquote(str) QUOTE =~ str && $2 || str end