Class: Yardstick::OrderedSet

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/yardstick/ordered_set.rb

Overview

A base class for an ordered set

Direct Known Subclasses

MeasurementSet, RuleSet

Instance Method Summary collapse

Constructor Details

#initialize(entries = nil) ⇒ Yardstick::OrderedSet

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns the OrderedSet instance

Parameters:

  • entries (Array) (defaults to: nil)

    optional entries



16
17
18
19
20
# File 'lib/yardstick/ordered_set.rb', line 16

def initialize(entries = nil)
  @entries = []
  @index   = {}
  merge(entries || [])
end

Instance Method Details

#<<(entry) ⇒ Yardstick::OrderedSet

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Append to the OrderedSet

Parameters:

  • entry (Object)

    the object to append

Returns:



31
32
33
34
35
36
37
# File 'lib/yardstick/ordered_set.rb', line 31

def <<(entry)
  unless include?(entry)
    @index[entry] = @entries.length
    @entries << entry
  end
  self
end

#each {|entry| ... } ⇒ Yardstick::OrderedSet

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Iterate over each entry

Yields:

  • (entry)

    yield to the entry

Yield Parameters:

  • entry (Object)

    an entry in the ordered set

Returns:



65
66
67
68
# File 'lib/yardstick/ordered_set.rb', line 65

def each(&block)
  @entries.each(&block)
  self
end

#empty?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Check if there are any entries

Returns:

  • (Boolean)

    true if there are no entries, false if there are



76
77
78
# File 'lib/yardstick/ordered_set.rb', line 76

def empty?
  @entries.empty?
end

#include?(entry) ⇒ Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Check if the entry exists in the set

Parameters:

  • entry (Object)

    the entry to test for

Returns:

  • (Boolean)

    true if the entry exists in the set, false if not



99
100
101
# File 'lib/yardstick/ordered_set.rb', line 99

def include?(entry)
  @index.key?(entry)
end

#index(entry) ⇒ Integer?

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Return the index for the entry in the set

Parameters:

  • entry (Object)

    the entry to check the set for

Returns:

  • (Integer, nil)

    the index for the entry, or nil if it does not exist



112
113
114
# File 'lib/yardstick/ordered_set.rb', line 112

def index(entry)
  @index[entry]
end

#lengthInteger

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

The number of entries

Returns:

  • (Integer)

    number of entries



86
87
88
# File 'lib/yardstick/ordered_set.rb', line 86

def length
  @entries.length
end

#merge(other) ⇒ Yardstick::OrderedSet

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Merge in another OrderedSet

Parameters:

  • other (#each)

    the other ordered set

Returns:



48
49
50
51
# File 'lib/yardstick/ordered_set.rb', line 48

def merge(other)
  other.each { |entry| self << entry }
  self
end