class Build::Files::List

A list of paths, where #each yields instances of Path.

def self.coerce(arg)

def self.coerce(arg)
	if arg.kind_of? self
		arg
	else
		Paths.new(arg)
	end
end

def +(list)

Create a composite list out of two other lists:
def +(list)
	Composite.new([self, list])
end

def intersects? other

Does this list of files include the path of any other?
def intersects? other
	other.any?{|path| include?(path)}
end

def map

def map
	Paths.new(super)
end

def rebase(root)

def rebase(root)
	Paths.new(self.collect{|path| path.rebase(root)}, [root])
end

def roots

def roots
	collect{|path| path.root}.sort.uniq
end

def to_paths

def to_paths
	Paths.new(each.to_a)
end

def with(**args)

def with(**args)
	return to_enum(:with, **args) unless block_given?
	
	paths = []
	
	each do |path|
		updated_path = path.with(args)
		
		yield path, updated_path
		
		paths << updated_path
	end
	
	return Paths.new(paths)
end