Class: Rails::Initializable::Collection
- Inherits:
-
Object
- Object
- Rails::Initializable::Collection
- Includes:
- Enumerable, TSort
- Defined in:
- lib/rails/initializable.rb
Instance Method Summary collapse
- #+(other) ⇒ Object
- #<<(initializer) ⇒ Object
- #concat(*initializer_collections) ⇒ Object
- #each(&block) ⇒ Object (also: #tsort_each_node)
- #has?(name) ⇒ Boolean
-
#initialize(initializers = nil) ⇒ Collection
constructor
A new instance of Collection.
- #last ⇒ Object
- #push(*initializers) ⇒ Object (also: #append)
- #to_a ⇒ Object
- #tsort_each_child(initializer, &block) ⇒ Object
Constructor Details
#initialize(initializers = nil) ⇒ Collection
Returns a new instance of Collection.
43 44 45 46 47 48 |
# File 'lib/rails/initializable.rb', line 43 def initialize(initializers = nil) @order = Hash.new { |hash, key| hash[key] = Set.new } @resolve = Hash.new { |hash, key| hash[key] = Set.new } @collection = [] concat(initializers) if initializers end |
Instance Method Details
#+(other) ⇒ Object
69 70 71 |
# File 'lib/rails/initializable.rb', line 69 def +(other) dup.concat(other.to_a) end |
#<<(initializer) ⇒ Object
73 74 75 76 77 78 79 |
# File 'lib/rails/initializable.rb', line 73 def <<(initializer) @collection << initializer @order[initializer.before] << initializer.name if initializer.before @order[initializer.name] << initializer.after if initializer.after @resolve[initializer.name] << initializer self end |
#concat(*initializer_collections) ⇒ Object
88 89 90 91 92 93 |
# File 'lib/rails/initializable.rb', line 88 def concat(*initializer_collections) initializer_collections.each do |initializers| initializers.each(&method(:<<)) end self end |
#each(&block) ⇒ Object Also known as: tsort_each_node
58 59 60 |
# File 'lib/rails/initializable.rb', line 58 def each(&block) @collection.each(&block) end |
#has?(name) ⇒ Boolean
95 96 97 |
# File 'lib/rails/initializable.rb', line 95 def has?(name) @resolve.key?(name) end |
#last ⇒ Object
54 55 56 |
# File 'lib/rails/initializable.rb', line 54 def last @collection.last end |
#push(*initializers) ⇒ Object Also known as: append
81 82 83 84 |
# File 'lib/rails/initializable.rb', line 81 def push(*initializers) initializers.each(&method(:<<)) self end |
#to_a ⇒ Object
50 51 52 |
# File 'lib/rails/initializable.rb', line 50 def to_a @collection end |
#tsort_each_child(initializer, &block) ⇒ Object
63 64 65 66 67 |
# File 'lib/rails/initializable.rb', line 63 def tsort_each_child(initializer, &block) @order[initializer.name].each do |name| @resolve[name].each(&block) end end |