Class: Hash
- Defined in:
- lib/qbxml/support.rb,
lib/quickbooks/structure.rb,
lib/quickbooks/ruby_magic.rb
Direct Known Subclasses
Instance Method Summary collapse
- #-(v) ⇒ Object
-
#camelize_keys(specials = {}) ⇒ Object
Transform all the keys in the hash to CamelCase format.
- #camelize_keys!(specials = {}) ⇒ Object
-
#diff(hsh) ⇒ Object
Returns values in this hash that are uniq or different than in the hash provided.
- #expand_slashes(seed = nil) ⇒ Object
- #expand_slashes!(seed = nil) ⇒ Object
- #flatten_slashes ⇒ Object
- #flatten_slashes! ⇒ Object
- #only(*keys) ⇒ Object
- #only!(*keys) ⇒ Object
- #ordered!(*keys_in_order) ⇒ Object
- #ordered? ⇒ Boolean
- #reverse_merge(hsh) ⇒ Object
- #reverse_merge!(hsh) ⇒ Object
- #slash_camelize_keys!(specials = {}) ⇒ Object
- #slashed! ⇒ Object
- #slashed? ⇒ Boolean
- #stringify_keys(specials = {}) ⇒ Object
- #stringify_keys!(specials = {}) ⇒ Object
- #stringify_values ⇒ Object
- #stringify_values! ⇒ Object
- #transform_keys(trans_hash) ⇒ Object
- #transform_keys!(trans_hash) ⇒ Object
- #underscore_keys(specials = {}) ⇒ Object
- #underscore_keys!(specials = {}) ⇒ Object
Instance Method Details
#-(v) ⇒ Object
116 117 118 119 120 |
# File 'lib/quickbooks/ruby_magic.rb', line 116 def -(v) hsh = self.dup (v.is_a?(Array) ? v : [v]).each { |k| hsh.delete(k) } hsh end |
#camelize_keys(specials = {}) ⇒ Object
Transform all the keys in the hash to CamelCase format.
91 92 93 |
# File 'lib/qbxml/support.rb', line 91 def camelize_keys(specials={}) self.dup.camelize_keys!(specials) end |
#camelize_keys!(specials = {}) ⇒ Object
94 95 96 97 98 99 |
# File 'lib/qbxml/support.rb', line 94 def camelize_keys!(specials={}) self.each_key do |k| self[specials.has_key?(k) ? specials[k] : k.camelize] = self.delete(k) end self end |
#diff(hsh) ⇒ Object
Returns values in this hash that are uniq or different than in the hash provided. Example:
{:a => :b, :f => :g, :z => :e}.diff(:a => :b, :f => :r, :u => :o) # => {:f => :g, :z => :e}
103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/quickbooks/ruby_magic.rb', line 103 def diff(hsh) dif = {} self.each do |k,v| dif[k] = v if !hsh.has_key?(k) if self[k].respond_to?(:===) dif[k] = v if !(self[k] === hsh[k]) else dif[k] = v if !(self[k] == hsh[k]) end end dif end |
#expand_slashes(seed = nil) ⇒ Object
282 283 284 285 |
# File 'lib/quickbooks/structure.rb', line 282 def (seed=nil) return self.dup if empty? [self.dup].flatten_slashes.(seed) end |
#expand_slashes!(seed = nil) ⇒ Object
286 287 288 289 |
# File 'lib/quickbooks/structure.rb', line 286 def (seed=nil) return self if empty? replace((seed)) end |
#flatten_slashes ⇒ Object
264 265 266 |
# File 'lib/quickbooks/structure.rb', line 264 def flatten_slashes self.dup.flatten_slashes! end |
#flatten_slashes! ⇒ Object
267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 |
# File 'lib/quickbooks/structure.rb', line 267 def flatten_slashes! hsh = {} #.ordered! self.each do |k,v| if v.is_a?(Hash) v.flatten_slashes.each do |vk,vv| hsh[k.to_s+'/'+vk.to_s] = vv end elsif v.is_a?(Array) hsh[k] = v.flatten_slashes else hsh[k] = v end end hsh end |
#only(*keys) ⇒ Object
111 112 113 |
# File 'lib/qbxml/support.rb', line 111 def only(*keys) self.dup.only!(*keys) end |
#only!(*keys) ⇒ Object
114 115 116 117 118 |
# File 'lib/qbxml/support.rb', line 114 def only!(*keys) keys = keys.flatten self.keys.each { |k| self.delete(k) unless keys.include?(k) } self end |
#ordered!(*keys_in_order) ⇒ Object
291 292 293 |
# File 'lib/quickbooks/structure.rb', line 291 def ordered!(*keys_in_order) OrderedHash.new(*keys_in_order).replace(self) end |
#ordered? ⇒ Boolean
294 295 296 |
# File 'lib/quickbooks/structure.rb', line 294 def ordered? false end |
#reverse_merge(hsh) ⇒ Object
131 132 133 |
# File 'lib/quickbooks/ruby_magic.rb', line 131 def reverse_merge(hsh) hsh.dup.merge(self) end |
#reverse_merge!(hsh) ⇒ Object
134 135 136 |
# File 'lib/quickbooks/ruby_magic.rb', line 134 def reverse_merge!(hsh) self.replace(hsh.merge(self)) end |
#slash_camelize_keys!(specials = {}) ⇒ Object
297 298 299 300 301 302 |
# File 'lib/quickbooks/structure.rb', line 297 def slash_camelize_keys!(specials={}) self.each_key do |k| self[specials.has_key?(k) ? specials[k] : (k.is_a?(Symbol) ? k.to_s.camelize.to_sym : k.split('/').map {|e| e.camelize}.join('/'))] = self.delete(k) end self end |
#slashed! ⇒ Object
259 260 261 262 263 |
# File 'lib/quickbooks/structure.rb', line 259 def slashed! SlashedHash.prepare_for_overwrites!(self) unless self.respond_to?(:set_value_unslashed) extend SlashedHash end |
#slashed? ⇒ Boolean
256 257 258 |
# File 'lib/quickbooks/structure.rb', line 256 def slashed? keys.any? {|k| k.to_s =~ /\//} end |
#stringify_keys(specials = {}) ⇒ Object
101 102 103 |
# File 'lib/qbxml/support.rb', line 101 def stringify_keys(specials={}) self.dup.stringify_keys!(specials) end |
#stringify_keys!(specials = {}) ⇒ Object
104 105 106 107 108 109 |
# File 'lib/qbxml/support.rb', line 104 def stringify_keys!(specials={}) self.each_key do |k| self[specials.has_key?(k) ? specials[k] : k.to_s] = self.delete(k) end self end |
#stringify_values ⇒ Object
90 91 92 |
# File 'lib/quickbooks/ruby_magic.rb', line 90 def stringify_values self.dup.stringify_values! end |
#stringify_values! ⇒ Object
93 94 95 96 97 98 |
# File 'lib/quickbooks/ruby_magic.rb', line 93 def stringify_values! self.each do |k,v| self[k] = v.to_s end self end |
#transform_keys(trans_hash) ⇒ Object
120 121 122 |
# File 'lib/qbxml/support.rb', line 120 def transform_keys(trans_hash) self.dup.transform_keys!(trans_hash) end |
#transform_keys!(trans_hash) ⇒ Object
123 124 125 126 127 128 129 |
# File 'lib/qbxml/support.rb', line 123 def transform_keys!(trans_hash) raise ArgumentError, "transform_keys takes a single hash argument" unless trans_hash.is_a?(Hash) self.each_key do |k| self[trans_hash.has_key?(k) ? trans_hash[k] : k] = self.delete(k) end self end |
#underscore_keys(specials = {}) ⇒ Object
80 81 82 |
# File 'lib/quickbooks/ruby_magic.rb', line 80 def underscore_keys(specials={}) self.dup.underscore_keys!(specials) end |
#underscore_keys!(specials = {}) ⇒ Object
83 84 85 86 87 88 |
# File 'lib/quickbooks/ruby_magic.rb', line 83 def underscore_keys!(specials={}) self.each_key do |k| self[specials.has_key?(k) ? specials[k] : k.underscore] = self.delete(k) end self end |