Class: Jeanny::Dictionary
- Inherits:
-
Object
- Object
- Jeanny::Dictionary
- Includes:
- Enumerable
- Defined in:
- lib/jeanny/engine.rb
Overview
Класс-попытка реализовать что нибудь похожее на упорядоченный хэш
Instance Attribute Summary collapse
-
#keys ⇒ Object
readonly
Returns the value of attribute keys.
-
#values ⇒ Object
readonly
Returns the value of attribute values.
Instance Method Summary collapse
- #[](key) ⇒ Object
- #[]=(key, value) ⇒ Object
- #append(key, value) ⇒ Object
- #each ⇒ Object
- #empty? ⇒ Boolean
- #include?(class_name) ⇒ Boolean (also: #has_key?)
-
#initialize(hash = { }) ⇒ Dictionary
constructor
A new instance of Dictionary.
- #last ⇒ Object
- #length ⇒ Object
- #select_keys_if(&block) ⇒ Object
- #sort! ⇒ Object
- #to_a ⇒ Object
- #to_s ⇒ Object
- #to_yaml ⇒ Object
Constructor Details
#initialize(hash = { }) ⇒ Dictionary
Returns a new instance of Dictionary.
121 122 123 124 125 126 127 128 129 |
# File 'lib/jeanny/engine.rb', line 121 def initialize hash = { } @keys = [ ] @values = [ ] hash.each_pair { |key, val| append key, val } if hash.kind_of? Hash hash.each { |item| append item[0], item[1] } if hash.kind_of? Array end |
Instance Attribute Details
#keys ⇒ Object (readonly)
Returns the value of attribute keys.
119 120 121 |
# File 'lib/jeanny/engine.rb', line 119 def keys @keys end |
#values ⇒ Object (readonly)
Returns the value of attribute values.
119 120 121 |
# File 'lib/jeanny/engine.rb', line 119 def values @values end |
Instance Method Details
#[](key) ⇒ Object
131 132 133 134 135 136 137 |
# File 'lib/jeanny/engine.rb', line 131 def [](key) if include? key @values[@keys.index(key)] else nil end end |
#[]=(key, value) ⇒ Object
139 140 141 142 143 144 145 |
# File 'lib/jeanny/engine.rb', line 139 def []=(key, value) if include? key @values[@keys.index(key)] = value else append key, value end end |
#append(key, value) ⇒ Object
147 148 149 150 |
# File 'lib/jeanny/engine.rb', line 147 def append key, value @keys << key @values << value end |
#each ⇒ Object
162 163 164 165 166 |
# File 'lib/jeanny/engine.rb', line 162 def each @keys.length.times do |i| yield @keys[i], @values[i] end end |
#empty? ⇒ Boolean
158 159 160 |
# File 'lib/jeanny/engine.rb', line 158 def empty? @keys.empty? end |
#include?(class_name) ⇒ Boolean Also known as: has_key?
152 153 154 |
# File 'lib/jeanny/engine.rb', line 152 def include? class_name @keys.include? class_name end |
#last ⇒ Object
188 189 190 191 192 |
# File 'lib/jeanny/engine.rb', line 188 def last unless @keys.empty? [@keys.last, @values.last] end end |
#length ⇒ Object
184 185 186 |
# File 'lib/jeanny/engine.rb', line 184 def length @keys.length end |
#select_keys_if(&block) ⇒ Object
175 176 177 178 179 180 181 182 |
# File 'lib/jeanny/engine.rb', line 175 def select_keys_if &block array = [] @keys.length.times do |i| need_append = yield @keys[i], @values[i] array << @keys[i] if need_append end array end |
#sort! ⇒ Object
168 169 170 171 172 173 |
# File 'lib/jeanny/engine.rb', line 168 def sort! @keys.map { |x| [x, @values[@keys.index(x)]] }.sort_by { |x| x[0].length }.reverse.each_with_index do |x, i| @keys[i] = x[0] @values[i] = x[1] end end |
#to_a ⇒ Object
200 201 202 |
# File 'lib/jeanny/engine.rb', line 200 def to_a @keys.map { |x| [x, @values[@keys.index(x)]] } end |
#to_s ⇒ Object
194 195 196 197 198 |
# File 'lib/jeanny/engine.rb', line 194 def to_s each do |key, val| puts key.ljust(40) + val end end |
#to_yaml ⇒ Object
204 205 206 207 208 209 210 |
# File 'lib/jeanny/engine.rb', line 204 def to_yaml yaml = [] each do |key, val| yaml.push({ key => val }) end yaml.to_yaml end |