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.
346 347 348 |
# File 'lib/wakame/util.rb', line 346 def initialize @keyorder=[] end |
Instance Method Details
#[]=(key, value) ⇒ Object
364 365 366 |
# File 'lib/wakame/util.rb', line 364 def []=(key, value) store(key, value) end |
#clear ⇒ Object
401 402 403 404 |
# File 'lib/wakame/util.rb', line 401 def clear super @keyorder.clear end |
#delete(key, &blk) ⇒ Object
368 369 370 371 372 373 |
# File 'lib/wakame/util.rb', line 368 def delete(key, &blk) if has_key?(key) @keyorder.delete(key) super(key, &blk) end end |
#each(&blk) ⇒ Object
379 380 381 382 383 |
# File 'lib/wakame/util.rb', line 379 def each(&blk) @keyorder.each { |k| blk.call(k, self[k]) } end |
#first ⇒ Object
389 390 391 |
# File 'lib/wakame/util.rb', line 389 def first self[first_key] end |
#first_key ⇒ Object
385 386 387 |
# File 'lib/wakame/util.rb', line 385 def first_key @keyorder.first end |
#inspect ⇒ Object
406 407 408 409 410 411 |
# File 'lib/wakame/util.rb', line 406 def inspect str = "{" str << @keyorder.collect{|k| "#{k}=>#{self[k]}" }.join(', ') str << "}" str end |
#invert ⇒ Object
413 414 415 |
# File 'lib/wakame/util.rb', line 413 def invert raise NotImplementedError end |
#keys ⇒ Object
375 376 377 |
# File 'lib/wakame/util.rb', line 375 def keys @keyorder end |
#last ⇒ Object
397 398 399 |
# File 'lib/wakame/util.rb', line 397 def last self[last_key] end |
#last_key ⇒ Object
393 394 395 |
# File 'lib/wakame/util.rb', line 393 def last_key @keyorder.last end |
#store(key, value) ⇒ Object
351 352 353 354 355 356 357 358 359 360 361 362 |
# File 'lib/wakame/util.rb', line 351 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 |