Class: Build::Dependency::Set
- Inherits:
-
Object
- Object
- Build::Dependency::Set
- Extended by:
- Forwardable
- Includes:
- Enumerable
- Defined in:
- lib/build/dependency/set.rb
Overview
Very similar to a set but uses a specific callback (defaults to &:name) for object identity.
Instance Attribute Summary collapse
-
#table ⇒ Object
readonly
Returns the value of attribute table.
Instance Method Summary collapse
- #add(object) ⇒ Object (also: #<<)
- #delete(object) ⇒ Object
- #each(&block) ⇒ Object
- #freeze ⇒ Object
- #identity(object) ⇒ Object
- #include?(object) ⇒ Boolean
-
#initialize(contents = []) ⇒ Set
constructor
A new instance of Set.
- #initialize_dup(other) ⇒ Object
- #slice(names) ⇒ Object
Constructor Details
#initialize(contents = []) ⇒ Set
Returns a new instance of Set.
29 30 31 32 33 34 35 |
# File 'lib/build/dependency/set.rb', line 29 def initialize(contents = []) @table = {} contents.each do |object| add(object) end end |
Instance Attribute Details
#table ⇒ Object (readonly)
Returns the value of attribute table.
37 38 39 |
# File 'lib/build/dependency/set.rb', line 37 def table @table end |
Instance Method Details
#add(object) ⇒ Object Also known as: <<
59 60 61 62 63 64 65 |
# File 'lib/build/dependency/set.rb', line 59 def add(object) if include?(object) raise KeyError, "Object #{identity(object)} already exists!" end @table[identity(object)] = object end |
#delete(object) ⇒ Object
69 70 71 |
# File 'lib/build/dependency/set.rb', line 69 def delete(object) @table.delete(identity(object)) end |
#each(&block) ⇒ Object
77 78 79 |
# File 'lib/build/dependency/set.rb', line 77 def each(&block) @table.each_value(&block) end |
#freeze ⇒ Object
43 44 45 46 47 48 49 |
# File 'lib/build/dependency/set.rb', line 43 def freeze return self if frozen? @table.freeze super end |
#identity(object) ⇒ Object
55 56 57 |
# File 'lib/build/dependency/set.rb', line 55 def identity(object) object.name end |
#include?(object) ⇒ Boolean
73 74 75 |
# File 'lib/build/dependency/set.rb', line 73 def include?(object) @table.include?(identity(object)) end |
#initialize_dup(other) ⇒ Object
51 52 53 |
# File 'lib/build/dependency/set.rb', line 51 def initialize_dup(other) @table = other.table.dup end |
#slice(names) ⇒ Object
81 82 83 |
# File 'lib/build/dependency/set.rb', line 81 def slice(names) names.collect{|name| @table[name]} end |