Class: Fuse::Document::AssetCollection

Inherits:
Array
  • Object
show all
Defined in:
lib/fuse/document/asset_collection.rb

Instance Method Summary collapse

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

#sortObject



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