Class: DataMapper::Support::TypedSet

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/data_mapper/support/typed_set.rb

Instance Method Summary collapse

Constructor Details

#initialize(*types) ⇒ TypedSet

Returns a new instance of TypedSet.



9
10
11
12
# File 'lib/data_mapper/support/typed_set.rb', line 9

def initialize(*types)
  @types = types
  @set = SortedSet.new
end

Instance Method Details

#+(other) ⇒ Object



51
52
53
54
55
56
# File 'lib/data_mapper/support/typed_set.rb', line 51

def +(other)
  x = self.class.new(*@types)
  each { |entry| x << entry }
  other.each { |entry| x << entry } unless other.blank?
  return x
end

#<<(item) ⇒ Object

Raises:

  • (ArgumentError)


14
15
16
17
18
# File 'lib/data_mapper/support/typed_set.rb', line 14

def <<(item)
  raise ArgumentError.new("#{item.inspect} must be a kind of: #{@types.inspect}") unless @types.any? { |type| type === item }
  @set << item
  return self
end

#clearObject



47
48
49
# File 'lib/data_mapper/support/typed_set.rb', line 47

def clear
  @set.clear
end

#concat(values) ⇒ Object



20
21
22
23
# File 'lib/data_mapper/support/typed_set.rb', line 20

def concat(values)
  [*values].each { |item| self << item }
  self
end

#delete?(item) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/data_mapper/support/typed_set.rb', line 33

def delete?(item)
  @set.delete?(item)
end

#eachObject



29
30
31
# File 'lib/data_mapper/support/typed_set.rb', line 29

def each
  @set.each { |item| yield(item) }
end

#empty?Boolean Also known as: blank?

Returns:

  • (Boolean)


42
43
44
# File 'lib/data_mapper/support/typed_set.rb', line 42

def empty?
  @set.empty?
end

#inspectObject



25
26
27
# File 'lib/data_mapper/support/typed_set.rb', line 25

def inspect
  "#<DataMapper::Support::TypedSet#{@types.inspect}: {#{entries.inspect[1...-1]}}>"
end

#sizeObject Also known as: length



37
38
39
# File 'lib/data_mapper/support/typed_set.rb', line 37

def size
  @set.size
end