class Fuse::Document::AssetCollection

Public Instance Methods

<<(*args) click to toggle source
Calls superclass method
# 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) click to toggle source
# File lib/fuse/document/asset_collection.rb, line 36
def group_by(*args, &block)
  Hash[super(*args, &block).map{ |k, v| [k, self.class.new(v)] }]
end
of_type(*types) click to toggle source
# 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, pushed = []) click to toggle source
# File lib/fuse/document/asset_collection.rb, line 27
def push_with_dependents(asset, pushed = [])
  pushed << asset
  asset.dependents.each do |dependent|
    raise Fuse::Exception::CircularDependency.new(asset, dependent) if pushed.include?(dependent)
    push_with_dependents dependent, pushed
  end
  self << asset
end
sort() click to toggle source
# File lib/fuse/document/asset_collection.rb, line 18
def sort
  self.class.new(self).sort!
end
sort!() click to toggle source
# 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