Module: Travis::Config::Helpers

Included in:
Travis::Config, Docker, Files, Heroku, Travis::Config::Heroku::Database, Travis::Config::Heroku::Memcached
Defined in:
lib/travis/config/helpers.rb

Instance Method Summary collapse

Instance Method Details

#blank?(obj) ⇒ Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/travis/config/helpers.rb', line 36

def blank?(obj)
  obj.respond_to?(:empty?) ? obj.empty? : !obj
end

#camelize(string) ⇒ Object



40
41
42
43
44
45
# File 'lib/travis/config/helpers.rb', line 40

def camelize(string)
  string.to_s.
    sub(/^[a-z\d]*/) { $&.capitalize }.
    gsub(/(?:_|(\/))([a-z\d]*)/i) { "#{$1}#{$2.capitalize}" }.
    gsub('/', '::')
end

#compact(obj) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
# File 'lib/travis/config/helpers.rb', line 24

def compact(obj)
  case obj
  when Array
    obj.reject { |obj| blank?(obj) }
  when Hash
    obj.keys.each { |key| obj.delete(key) if blank?(obj[key]) }
    obj
  else
    obj
  end
end

#deep_merge(hash, other) ⇒ Object



19
20
21
22
# File 'lib/travis/config/helpers.rb', line 19

def deep_merge(hash, other)
  merger = proc { |key, v1, v2| v1.is_a?(Hash) && v2.is_a?(Hash) ? v1.merge(v2, &merger) : v2 || v1 }
  hash.merge(other, &merger)
end

#deep_symbolize_keys(hash) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/travis/config/helpers.rb', line 4

def deep_symbolize_keys(hash)
  hash.inject({}) do |result, (key, value)|
    key = key.to_sym if key.respond_to?(:to_sym)
    result[key] = case value
    when Array
      value.map { |value| value.is_a?(Hash) ? value.deep_symbolize_keys : value }
    when Hash
      value.deep_symbolize_keys
    else
      value
    end
    result
  end
end