module Paggio::Utils

Public Class Methods

deep_merge(a, b) click to toggle source
# File lib/paggio/utils.rb, line 20
def self.deep_merge(a, b)
  merger = proc {|key, v1, v2|
    if Hash === v1 && Hash === v2
      v1.merge(v2, &merger)
    else
      v2
    end
  }

  a.merge(b, &merger)
end
deep_merge!(a, b) click to toggle source
# File lib/paggio/utils.rb, line 32
def self.deep_merge!(a, b)
  merger = proc {|key, v1, v2|
    if Hash === v1 && Hash === v2
      v1.merge!(v2, &merger)
      v1
    else
      v2
    end
  }

  a.merge!(b, &merger)
end
heredoc(string) click to toggle source
# File lib/paggio/utils.rb, line 14
def self.heredoc(string)
  indent = string.scan(/^[ \t]*(?=\S)/).min.size rescue 0

  string.gsub(/^[ \t]{#{indent}}/, '')
end