Class: OrderedHash
- Inherits:
-
Hash
show all
- Defined in:
- lib/quickbooks/structure.rb
Instance Method Summary
collapse
Methods inherited from Hash
#-, #camelize_keys, #camelize_keys!, #diff, #expand_slashes, #expand_slashes!, #flatten_slashes, #flatten_slashes!, #only, #only!, #reverse_merge, #reverse_merge!, #slash_camelize_keys!, #slashed!, #slashed?, #stringify_keys, #stringify_keys!, #stringify_values, #stringify_values!, #transform_keys, #transform_keys!, #underscore_keys, #underscore_keys!
Constructor Details
#initialize(*keys_in_order, &block) ⇒ OrderedHash
Returns a new instance of OrderedHash.
347
348
349
350
|
# File 'lib/quickbooks/structure.rb', line 347
def initialize(*keys_in_order, &block)
super(&block)
@keys_in_order = keys_in_order.flatten + (self.keys.reject {|e| !keys_in_order.flatten.include?(e) }).compact.keep_unique!
end
|
Instance Method Details
384
385
386
387
388
389
390
391
392
|
# File 'lib/quickbooks/structure.rb', line 384
def [](k)
v = get_value(k)
if (v.is_a?(Hash) || v.is_a?(Array)) && !v.ordered?
child_order = @keys_in_order.step_into_slash(k)
v = self[k] = v.ordered!(child_order)
end
v
end
|
#[]=(k, v) ⇒ Object
380
381
382
383
|
# File 'lib/quickbooks/structure.rb', line 380
def []=(k,v)
@keys_in_order << k
set_value(k,v)
end
|
352
353
354
|
# File 'lib/quickbooks/structure.rb', line 352
def dup
Hash.new.replace(self)
end
|
#each(&block) ⇒ Object
369
370
371
372
373
|
# File 'lib/quickbooks/structure.rb', line 369
def each(&block)
self.keys.each do |k|
block.call(k, self[k])
end
end
|
#each_key(&block) ⇒ Object
374
375
376
|
# File 'lib/quickbooks/structure.rb', line 374
def each_key(&block)
self.keys.each &block
end
|
#each_unordered ⇒ Object
343
|
# File 'lib/quickbooks/structure.rb', line 343
alias :each_unordered :each
|
#each_value(&block) ⇒ Object
377
378
379
|
# File 'lib/quickbooks/structure.rb', line 377
def each_value(&block)
self.values.each &block
end
|
#get_value ⇒ Object
345
|
# File 'lib/quickbooks/structure.rb', line 345
alias :get_value :[]
|
363
364
365
|
# File 'lib/quickbooks/structure.rb', line 363
def keys
expand_slashes.keys.sort {|a,b| @keys_in_order.index(a) <=> @keys_in_order.index(b)}
end
|
356
357
358
|
# File 'lib/quickbooks/structure.rb', line 356
def ordered!
false
end
|
#ordered? ⇒ Boolean
359
360
361
|
# File 'lib/quickbooks/structure.rb', line 359
def ordered?
true
end
|
#set_value ⇒ Object
344
|
# File 'lib/quickbooks/structure.rb', line 344
alias :set_value :[]=
|
#unordered_keys ⇒ Object
341
|
# File 'lib/quickbooks/structure.rb', line 341
alias :unordered_keys :keys
|
#unordered_values ⇒ Object
342
|
# File 'lib/quickbooks/structure.rb', line 342
alias :unordered_values :values
|
366
367
368
|
# File 'lib/quickbooks/structure.rb', line 366
def values
self.keys.collect {|k| self[k]}
end
|