Sha256: 8da00adbab1bb29aadda14df617f6c4548d1b3593e069998a9ea5349894799d6
Contents?: true
Size: 1.13 KB
Versions: 1
Compression:
Stored size: 1.13 KB
Contents
module Linecook module Utils module_function def nest_hash Hash.new {|hash, key| hash[key] = nest_hash } end def serial_merge(*hashes) attrs = {} while overrides = hashes.shift attrs = deep_merge(attrs, overrides) end attrs end def deep_merge(a, b) b.each_pair do |key, current| previous = a[key] a[key] = deep_merge?(previous, current) ? deep_merge(previous, current) : current end a end def deep_merge?(previous, current) current.kind_of?(Hash) && previous.kind_of?(Hash) end def camelize(str) str.to_s.gsub(/\/(.?)/) { "::" + $1.upcase }.gsub(/(^|_)(.)/) { $2.upcase } end def underscore(str) str.gsub(/::/, '/'). gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2'). gsub(/([a-z\d])([A-Z])/,'\1_\2'). tr("-", "_"). downcase end def constantize(const_name) constants = camelize(const_name).split(/::/) const = Object while name = constants.shift const = const.const_get(name) end const end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
linecook-0.6.2 | lib/linecook/utils.rb |