Class: SortedSet

Inherits:
Set
  • Object
show all
Defined in:
lib/rubysl/set/set.rb

Overview

SortedSet implements a set which elements are sorted in order. See Set.

Constant Summary collapse

@@setup =
false

Constants inherited from Set

Set::InspectKey

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Set

#&, #-, #==, #^, #add?, #classify, #collect!, #delete?, #divide, #empty?, #eql?, #flatten, #flatten!, #hash, #include?, #initialize_copy, #inspect, #pretty_print, #pretty_print_cycle, #proper_subset?, #proper_superset?, #reject!, #size, #subset?, #subtract, #superset?, #|

Methods included from Enumerable

#to_set

Constructor Details

#initialize(*args, &block) ⇒ SortedSet

Returns a new instance of SortedSet.



447
448
449
450
# File 'lib/rubysl/set/set.rb', line 447

def initialize(*args, &block)
  @keys = nil
  super
end

Class Method Details

.[](*ary) ⇒ Object

:nodoc:



442
443
444
# File 'lib/rubysl/set/set.rb', line 442

def [](*ary)        # :nodoc:
  new(ary)
end

Instance Method Details

#add(o) ⇒ Object Also known as: <<

Raises:

  • (ArgumentError)


462
463
464
465
466
467
# File 'lib/rubysl/set/set.rb', line 462

def add(o)
  raise ArgumentError, "value must respond to <=>" unless o.respond_to?(:<=>)
  @keys = nil
  @hash[o] = true
  self
end

#clearObject



452
453
454
455
# File 'lib/rubysl/set/set.rb', line 452

def clear
  @keys = nil
  super
end

#delete(o) ⇒ Object



471
472
473
474
475
# File 'lib/rubysl/set/set.rb', line 471

def delete(o)
  @keys = nil
  @hash.delete(o)
  self
end

#delete_ifObject



477
478
479
480
481
482
# File 'lib/rubysl/set/set.rb', line 477

def delete_if
  n = @hash.size
  super
  @keys = nil if @hash.size != n
  self
end

#eachObject



489
490
491
492
493
# File 'lib/rubysl/set/set.rb', line 489

def each
  return enum_for(:each) unless block_given?
  to_a.each { |o| yield(o) }
  self
end

#merge(enum) ⇒ Object



484
485
486
487
# File 'lib/rubysl/set/set.rb', line 484

def merge(enum)
  @keys = nil
  super
end

#replace(enum) ⇒ Object



457
458
459
460
# File 'lib/rubysl/set/set.rb', line 457

def replace(enum)
  @keys = nil
  super
end

#to_aObject



495
496
497
498
499
500
501
502
# File 'lib/rubysl/set/set.rb', line 495

def to_a
  unless @keys
    keys = @hash.keys
    keys.sort!
    @keys = keys
  end
  @keys
end