Class: SortedHash

Inherits:
Hash
  • Object
show all
Defined in:
lib/wakame/util.rb

Instance Method Summary collapse

Constructor Details

#initializeSortedHash

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

#clearObject



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

#firstObject



389
390
391
# File 'lib/wakame/util.rb', line 389

def first
  self[first_key]
end

#first_keyObject



385
386
387
# File 'lib/wakame/util.rb', line 385

def first_key
  @keyorder.first
end

#inspectObject



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

#invertObject

Raises:

  • (NotImplementedError)


413
414
415
# File 'lib/wakame/util.rb', line 413

def invert
  raise NotImplementedError
end

#keysObject



375
376
377
# File 'lib/wakame/util.rb', line 375

def keys
  @keyorder
end

#lastObject



397
398
399
# File 'lib/wakame/util.rb', line 397

def last
  self[last_key]
end

#last_keyObject



393
394
395
# File 'lib/wakame/util.rb', line 393

def last_key
  @keyorder.last
end

#store(key, value) ⇒ Object

Raises:

  • (TypeError)


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