Class: Fuse::Document::AssetCollection
- Inherits:
-
Array
- Object
- Array
- Fuse::Document::AssetCollection
- Defined in:
- lib/fuse/document/asset_collection.rb
Instance Method Summary collapse
- #<<(*args) ⇒ Object
- #group_by(*args, &block) ⇒ Object
- #of_type(*types) ⇒ Object
- #push_with_dependents(asset) ⇒ Object
- #sort ⇒ Object
- #sort! ⇒ Object
Instance Method Details
#<<(*args) ⇒ Object
22 23 24 25 |
# File 'lib/fuse/document/asset_collection.rb', line 22 def <<(*args) args.each { |arg| super(arg) unless include? arg } self end |
#group_by(*args, &block) ⇒ Object
33 34 35 |
# File 'lib/fuse/document/asset_collection.rb', line 33 def group_by(*args, &block) Hash[super(*args, &block).map{ |k, v| [k, self.class.new(v)] }] end |
#of_type(*types) ⇒ Object
3 4 5 6 7 8 9 |
# File 'lib/fuse/document/asset_collection.rb', line 3 def of_type(*types) self.class.new select { |a| ret = types.include? a.class types.each { |type| ret ||= a.is_a? type } unless ret ret } end |
#push_with_dependents(asset) ⇒ Object
27 28 29 30 31 |
# File 'lib/fuse/document/asset_collection.rb', line 27 def push_with_dependents(asset) #todo check for circular references asset.dependents.each { |d| push_with_dependents d } self << asset end |
#sort ⇒ Object
18 19 20 |
# File 'lib/fuse/document/asset_collection.rb', line 18 def sort self.class.new(self).sort! end |
#sort! ⇒ Object
11 12 13 14 15 16 |
# File 'lib/fuse/document/asset_collection.rb', line 11 def sort! unsorted = Array.new(self) clear unsorted.each { |a| push_with_dependents a } self end |