class Middleman::Sources

def run_callbacks(callback_descriptors, updated_files, removed_files)

def run_callbacks(callback_descriptors, updated_files, removed_files)
  callback_descriptors.each do |callback|
    if callback[:type] == :all
      callback[:proc].call(updated_files, removed_files)
    else
      valid_updated = updated_files.select { |f| f[:types].include?(callback[:type]) }
      valid_removed = removed_files.select { |f| f[:types].include?(callback[:type]) }
      callback[:proc].call(valid_updated, valid_removed) unless valid_updated.empty? && valid_removed.empty?
    end
  end
end