Class: Declutter
- Inherits:
-
Object
- Object
- Declutter
- Defined in:
- lib/declutter.rb
Overview
Declutter
Instance Attribute Summary collapse
-
#delete_empty_arrays ⇒ Object
Returns the value of attribute delete_empty_arrays.
-
#delete_empty_hashes ⇒ Object
Returns the value of attribute delete_empty_hashes.
-
#delete_falses ⇒ Object
Returns the value of attribute delete_falses.
-
#delete_nils ⇒ Object
Returns the value of attribute delete_nils.
-
#delete_redundancies ⇒ Object
Returns the value of attribute delete_redundancies.
Class Method Summary collapse
-
.process(obj) ⇒ Object
————————————————————————— self.process.
Instance Method Summary collapse
-
#initialize ⇒ Declutter
constructor
————————————————————————— initialize.
-
#keep_element?(v) ⇒ Boolean
————————————————————————— keep_element.
-
#process(obj) ⇒ Object
————————————————————————— process Process hash or array.
-
#process_array(arr) ⇒ Object
————————————————————————— process_array.
-
#process_hash(hsh) ⇒ Object
————————————————————————— process_hash.
Constructor Details
#initialize ⇒ Declutter
initialize
14 15 16 17 18 19 20 |
# File 'lib/declutter.rb', line 14 def initialize @delete_empty_hashes = true @delete_empty_arrays = true @delete_redundancies = false @delete_nils = false @delete_falses = false end |
Instance Attribute Details
#delete_empty_arrays ⇒ Object
Returns the value of attribute delete_empty_arrays.
6 7 8 |
# File 'lib/declutter.rb', line 6 def delete_empty_arrays @delete_empty_arrays end |
#delete_empty_hashes ⇒ Object
Returns the value of attribute delete_empty_hashes.
5 6 7 |
# File 'lib/declutter.rb', line 5 def delete_empty_hashes @delete_empty_hashes end |
#delete_falses ⇒ Object
Returns the value of attribute delete_falses.
9 10 11 |
# File 'lib/declutter.rb', line 9 def delete_falses @delete_falses end |
#delete_nils ⇒ Object
Returns the value of attribute delete_nils.
8 9 10 |
# File 'lib/declutter.rb', line 8 def delete_nils @delete_nils end |
#delete_redundancies ⇒ Object
Returns the value of attribute delete_redundancies.
7 8 9 |
# File 'lib/declutter.rb', line 7 def delete_redundancies @delete_redundancies end |
Class Method Details
.process(obj) ⇒ Object
self.process
45 46 47 |
# File 'lib/declutter.rb', line 45 def self.process(obj) self.new.process obj end |
Instance Method Details
#keep_element?(v) ⇒ Boolean
keep_element
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'lib/declutter.rb', line 101 def keep_element?(v) # hash if v.is_a?(Hash) if @delete_empty_hashes and v.empty? return false end # array elsif v.is_a?(Array) if @delete_empty_arrays and v.empty? return false end # nil elsif v.nil? return !@delete_nils # false elsif not v return !@delete_falses end # if we get this far then we're keeping the element return true end |
#process(obj) ⇒ Object
process Process hash or array. Anything else is left as is.
30 31 32 33 34 35 36 |
# File 'lib/declutter.rb', line 30 def process(obj) if obj.is_a?(Hash) process_hash obj elsif obj.is_a?(Array) process_array obj end end |
#process_array(arr) ⇒ Object
process_array
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/declutter.rb', line 75 def process_array(arr) hold = arr.clone arr.clear # add back elements that are acceptable hold.each do |child| process child if keep_element?(child) arr.push child end end # uniq array if necessary if @delete_redundancies arr.uniq! end end |
#process_hash(hsh) ⇒ Object
process_hash
56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/declutter.rb', line 56 def process_hash(hsh) hsh.keys.each do |k| v = hsh[k] process v # delete or process element if not keep_element?(v) hsh.delete k end end end |