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.



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

#clearObject



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

#firstObject



380
381
382
# File 'lib/wakame/util.rb', line 380

def first
  self[first_key]
end

#first_keyObject



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

def first_key
  @keyorder.first
end

#inspectObject



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

#invertObject

Raises:

  • (NotImplementedError)


404
405
406
# File 'lib/wakame/util.rb', line 404

def invert
  raise NotImplementedError
end

#keysObject



366
367
368
# File 'lib/wakame/util.rb', line 366

def keys
  @keyorder
end

#lastObject



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

def last
  self[last_key]
end

#last_keyObject



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

def last_key
  @keyorder.last
end

#store(key, value) ⇒ Object

Raises:

  • (TypeError)


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