/* sbt -- Simple Build Tool
 * Copyright 2008, 2009  Mark Harrah
 */
package sbt

import java.io.File
import java.util.regex.Pattern

trait trait FileFilter extends java.lang.Object with java.io.FileFilter with NotNull with ScalaObjectFileFilter extends java.io.java.io.FileFilterFileFilter with NotNullNotNull
{
	def (sbt.FileFilter)sbt.FileFilter|| (sbt.FileFilterfilter: sbt.FileFilterFileFilter): sbt.FileFilterFileFilter = sbt.SimpleFileFilternew sbt.SimpleFileFilterSimpleFileFilter( java.io.Filefile => (java.io.File)Booleanaccept(java.io.Filefile) (Boolean)Boolean|| sbt.FileFilterfilter.(java.io.File)Booleanaccept(java.io.Filefile) )
	def (sbt.FileFilter)sbt.FileFilter&& (sbt.FileFilterfilter: sbt.FileFilterFileFilter): sbt.FileFilterFileFilter = sbt.SimpleFileFilternew sbt.SimpleFileFilterSimpleFileFilter( java.io.Filefile => (java.io.File)Booleanaccept(java.io.Filefile) (Boolean)Boolean&& sbt.FileFilterfilter.(java.io.File)Booleanaccept(java.io.Filefile) )
	def (sbt.FileFilter)sbt.FileFilter-- (sbt.FileFilterfilter: sbt.FileFilterFileFilter): sbt.FileFilterFileFilter = sbt.SimpleFileFilternew sbt.SimpleFileFilterSimpleFileFilter( java.io.Filefile => (java.io.File)Booleanaccept(java.io.Filefile) (Boolean)Boolean&& => Boolean!sbt.FileFilterfilter.(java.io.File)Booleanaccept(java.io.Filefile) )
	def => sbt.FileFilterunary_-- : sbt.FileFilterFileFilter = sbt.SimpleFileFilternew sbt.SimpleFileFilterSimpleFileFilter( java.io.Filefile => => Boolean!(java.io.File)Booleanaccept(java.io.Filefile) )
}
trait trait NameFilter extends java.lang.Object with sbt.FileFilter with NotNull with ScalaObjectNameFilter extends sbt.FileFilterFileFilter with NotNullNotNull
{
	def (String)Booleanaccept(Stringname: StringString): BooleanBoolean
	final def (java.io.File)Booleanaccept(java.io.Filefile: java.io.FileFile): BooleanBoolean = (String)Booleanaccept(java.io.Filefile.()java.lang.StringgetName)
	def (sbt.NameFilter)sbt.NameFilter| (sbt.NameFilterfilter: sbt.NameFilterNameFilter): sbt.NameFilterNameFilter = sbt.SimpleFilternew sbt.SimpleFilterSimpleFilter( Stringname => (String)Booleanaccept(Stringname) (Boolean)Boolean|| sbt.NameFilterfilter.(String)Booleanaccept(Stringname) )
	def (sbt.NameFilter)sbt.NameFilter& (sbt.NameFilterfilter: sbt.NameFilterNameFilter): sbt.NameFilterNameFilter = sbt.SimpleFilternew sbt.SimpleFilterSimpleFilter( Stringname => (String)Booleanaccept(Stringname) (Boolean)Boolean&& sbt.NameFilterfilter.(String)Booleanaccept(Stringname) )
	def (sbt.NameFilter)sbt.NameFilter- (sbt.NameFilterfilter: sbt.NameFilterNameFilter): sbt.NameFilterNameFilter = sbt.SimpleFilternew sbt.SimpleFilterSimpleFilter( Stringname => (String)Booleanaccept(Stringname) (Boolean)Boolean&& => Boolean!sbt.NameFilterfilter.(String)Booleanaccept(Stringname) )
	def => sbt.NameFilterunary_- : sbt.NameFilterNameFilter = sbt.SimpleFilternew sbt.SimpleFilterSimpleFilter( Stringname => => Boolean!(String)Booleanaccept(Stringname) )
}
object object sbt.HiddenFileFilterHiddenFileFilter extends sbt.FileFilterFileFilter {
	def (java.io.File)Booleanaccept(java.io.Filefile: java.io.FileFile) = java.io.Filefile.()BooleanisHidden
}
object object sbt.ExistsFileFilterExistsFileFilter extends sbt.FileFilterFileFilter {
	def (java.io.File)Booleanaccept(java.io.Filefile: java.io.FileFile) = java.io.Filefile.()Booleanexists
}
object object sbt.DirectoryFilterDirectoryFilter extends sbt.FileFilterFileFilter {
	def (java.io.File)Booleanaccept(java.io.Filefile: java.io.FileFile) = java.io.Filefile.()BooleanisDirectory
}
class class SimpleFileFilter extends java.lang.Object with sbt.FileFilter with ScalaObjectSimpleFileFilter(val (java.io.File) => BooleanacceptFunction: File => Boolean) extends sbt.FileFilterFileFilter
{
	def (java.io.File)Booleanaccept(java.io.Filefile: java.io.FileFile) = (java.io.File)BooleanacceptFunction(java.io.Filefile)
}
class class ExactFilter extends java.lang.Object with sbt.NameFilter with ScalaObjectExactFilter(val StringmatchName: StringString) extends sbt.NameFilterNameFilter
{
	def (String)Booleanaccept(Stringname: StringString) = => StringmatchName (AnyRef)Boolean== Stringname
}
class class SimpleFilter extends java.lang.Object with sbt.NameFilter with ScalaObjectSimpleFilter(val (String) => BooleanacceptFunction: String => Boolean) extends sbt.NameFilterNameFilter
{
	def (String)Booleanaccept(Stringname: StringString) = (String)BooleanacceptFunction(Stringname)
}
class class PatternFilter extends java.lang.Object with sbt.NameFilter with ScalaObjectPatternFilter(val java.util.regex.Patternpattern: java.util.regex.PatternPattern) extends sbt.NameFilterNameFilter
{
	def (String)Booleanaccept(Stringname: StringString) = => java.util.regex.Patternpattern.(java.lang.CharSequence)java.util.regex.Matchermatcher(Stringname).()Booleanmatches
}
object object sbt.AllPassFilterAllPassFilter extends sbt.NameFilterNameFilter
{
	def (String)Booleanaccept(Stringname: StringString) = Boolean(true)true
}

object object sbt.GlobFilterGlobFilter
{
	def (String)sbt.NameFilterapply(Stringexpression: StringString): sbt.NameFilterNameFilter =
	{
		(Boolean,=> Any)Unitrequire(=> Boolean!implicit scala.Predef.stringWrapper : (String)scala.runtime.RichStringexpression.((Char) => Boolean)Booleanexists(java.lang.object java.lang.CharacterCharacter.(Char)BooleanisISOControl), java.lang.String("Control characters not allowed in filter expression.")"Control characters not allowed in filter expression.")
		sbt.NameFilterif(Stringexpression (AnyRef)Boolean== java.lang.String("*")"*")
			object sbt.AllPassFilterAllPassFilter
		else sbt.NameFilterif(Stringexpression.(Int)IntindexOf(Int(42)'*') (Int)Boolean< Int(0)0) // includes case where expression is empty
			sbt.ExactFilternew sbt.ExactFilterExactFilter(Stringexpression)
		else
			sbt.PatternFilternew sbt.PatternFilterPatternFilter(object java.util.regex.PatternPattern.(java.lang.String)java.util.regex.Patterncompile(Stringexpression.(java.lang.String,Int)Array[java.lang.String]split(java.lang.String("\*")"\\*", -Int(-1)1).((java.lang.String) => java.lang.String)Array[java.lang.String]map((String)java.lang.Stringquote).(String)StringmkString(java.lang.String(".*")".*")))
	}
	private def (String)java.lang.Stringquote(Strings: StringString) = java.lang.Stringif(implicit scala.Predef.stringWrapper : (String)scala.runtime.RichStrings.=> BooleanisEmpty) java.lang.String("")"" else object java.util.regex.PatternPattern.(java.lang.String)java.lang.Stringquote(Strings.(java.lang.String,java.lang.String)java.lang.StringreplaceAll(java.lang.String("\012")"\n", java.lang.String("\n")"""\n"""))
}