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
- #blank?(obj) ⇒ Boolean
- #camelize(string) ⇒ Object
- #compact(obj) ⇒ Object
- #deep_merge(hash, other) ⇒ Object
- #deep_symbolize_keys(hash) ⇒ Object
Instance Method Details
#blank?(obj) ⇒ 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 |