Class: SortedHash
- Inherits:
-
Hash
- Object
- Hash
- SortedHash
- Defined in:
- lib/wakame/util.rb
Instance Method Summary collapse
- #[]=(key, value) ⇒ Object
- #clear ⇒ Object
- #delete(key, &blk) ⇒ Object
- #each(&blk) ⇒ Object
- #first ⇒ Object
- #first_key ⇒ Object
-
#initialize ⇒ SortedHash
constructor
A new instance of SortedHash.
- #inspect ⇒ Object
- #invert ⇒ Object
- #keys ⇒ Object
- #last ⇒ Object
- #last_key ⇒ Object
- #store(key, value) ⇒ Object
Constructor Details
#initialize ⇒ SortedHash
Returns a new instance of SortedHash.
337 338 339 |
# File 'lib/wakame/util.rb', line 337 def initialize @keyorder=[] end |
Instance Method Details
#[]=(key, value) ⇒ Object
355 356 357 |
# File 'lib/wakame/util.rb', line 355 def []=(key, value) store(key, value) end |
#clear ⇒ Object
392 393 394 395 |
# File 'lib/wakame/util.rb', line 392 def clear super @keyorder.clear end |
#delete(key, &blk) ⇒ Object
359 360 361 362 363 364 |
# File 'lib/wakame/util.rb', line 359 def delete(key, &blk) if has_key?(key) @keyorder.delete(key) super(key, &blk) end end |
#each(&blk) ⇒ Object
370 371 372 373 374 |
# File 'lib/wakame/util.rb', line 370 def each(&blk) @keyorder.each { |k| blk.call(k, self[k]) } end |
#first ⇒ Object
380 381 382 |
# File 'lib/wakame/util.rb', line 380 def first self[first_key] end |
#first_key ⇒ Object
376 377 378 |
# File 'lib/wakame/util.rb', line 376 def first_key @keyorder.first end |
#inspect ⇒ Object
397 398 399 400 401 402 |
# File 'lib/wakame/util.rb', line 397 def inspect str = "{" str << @keyorder.collect{|k| "#{k}=>#{self[k]}" }.join(', ') str << "}" str end |
#invert ⇒ Object
404 405 406 |
# File 'lib/wakame/util.rb', line 404 def invert raise NotImplementedError end |
#keys ⇒ Object
366 367 368 |
# File 'lib/wakame/util.rb', line 366 def keys @keyorder end |
#last ⇒ Object
388 389 390 |
# File 'lib/wakame/util.rb', line 388 def last self[last_key] end |
#last_key ⇒ Object
384 385 386 |
# File 'lib/wakame/util.rb', line 384 def last_key @keyorder.last end |
#store(key, value) ⇒ Object
342 343 344 345 346 347 348 349 350 351 352 353 |
# File 'lib/wakame/util.rb', line 342 def store(key, value) raise TypeError, "#{key} is not Comparable" unless key.kind_of?(Comparable) if has_key?(key) ret = super(key, value) else ret = super(key, value) @keyorder << key @keyorder.sort! end ret end |