Class: NewPage::InputHash
- Inherits:
-
Hash
- Object
- Hash
- NewPage::InputHash
- Defined in:
- lib/new_page/input_hash.rb
Instance Attribute Summary collapse
-
#filled_keys ⇒ Object
readonly
Returns the value of attribute filled_keys.
-
#reader ⇒ Object
readonly
Returns the value of attribute reader.
Instance Method Summary collapse
- #[](key) ⇒ Object
- #[]=(key, value) ⇒ Object
- #filled?(key) ⇒ Boolean
- #include?(key) ⇒ Boolean
-
#initialize(data = {}, reader: NoInput, **args) ⇒ InputHash
constructor
A new instance of InputHash.
- #normalize_key(key) ⇒ Object
Constructor Details
#initialize(data = {}, reader: NoInput, **args) ⇒ InputHash
Returns a new instance of InputHash.
110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/new_page/input_hash.rb', line 110 def initialize(data = {}, reader: NoInput, **args) if (reader != NoInput) @reader = reader.new(**args) else @reader = reader.new() end super() data = Hash.new unless data.is_a? Hash merge! data.transform_keys { |k| normalize_key(k) } @filled_keys = data.keys end |
Instance Attribute Details
#filled_keys ⇒ Object (readonly)
Returns the value of attribute filled_keys.
104 105 106 |
# File 'lib/new_page/input_hash.rb', line 104 def filled_keys @filled_keys end |
#reader ⇒ Object (readonly)
Returns the value of attribute reader.
104 105 106 |
# File 'lib/new_page/input_hash.rb', line 104 def reader @reader end |
Instance Method Details
#[](key) ⇒ Object
133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/new_page/input_hash.rb', line 133 def [](key) key = normalize_key(key) if (@filled_keys.include?(key)) value = super(key) else print "Reading #{key} with #{@reader}\n" value = @reader.input(key) unless @filled_keys.include?(key) self[key]=value end value end |
#[]=(key, value) ⇒ Object
145 146 147 148 149 |
# File 'lib/new_page/input_hash.rb', line 145 def []=(key, value) key=normalize_key(key) @filled_keys += [ key ] unless @filled_keys.include?(key) super(key, value) end |
#filled?(key) ⇒ Boolean
125 126 127 |
# File 'lib/new_page/input_hash.rb', line 125 def filled?(key) return filled_keys.include?(key) end |
#include?(key) ⇒ Boolean
129 130 131 |
# File 'lib/new_page/input_hash.rb', line 129 def include?(key) return super.include?(key) || filled?(key) end |
#normalize_key(key) ⇒ Object
106 107 108 |
# File 'lib/new_page/input_hash.rb', line 106 def normalize_key(key) return key.to_s.strip.tr("._ ", "-").to_sym end |