-- File created: 2008-10-10 13:37:42

-- | A library for globbing: matching patterns against file paths akin to the
-- POSIX @glob()@ function.
--
-- Pattern syntax is documented by 'compile'. To toggle features at compile
-- time, look into 'CompOptions'. To modify matching behaviour, look into
-- 'MatchOptions'.
--
-- Basic usage examples:
--
-- Matching a 'String' pattern against a 'FilePath':
--
-- @
-- 'match' ('compile' pattern) filepath
-- @
--
-- Matching a 'String' pattern against all paths in the current working
-- directory:
--
-- @
-- 'glob' pattern
-- @
--
-- Matching a 'String' pattern against all paths in a given directory (a
-- 'FilePath'):
--
-- @
-- 'globDir1' ('compile' pattern) directorypath
-- @
--
-- Matching a list of 'String' patterns against all paths in a given directory,
-- returning the matches for each pattern as well as the paths not matched by
-- any of the patterns:
--
-- @
-- 'globDir' (map 'compile' patterns) directorypath
-- @
module System.FilePath.Glob
   ( -- * Data type
     Pattern
     -- * Functions
     -- ** Compilation
   , compile, decompile, simplify
     -- *** Options
   , CompOptions(..)
   , compileWith, tryCompileWith
     -- **** Predefined option sets
   , compDefault, compPosix
     -- ** Matching
   , match
   , globDir, globDir1, glob
     -- *** Options
   , MatchOptions(..)
   , matchWith
   , GlobOptions(..)
   , globDirWith
     -- **** Predefined option sets
   , matchDefault, matchPosix
   , globDefault
     -- ** Miscellaneous
   , commonDirectory
   , isLiteral
   ) where

import System.FilePath.Glob.Base      ( Pattern
                                      , CompOptions(..), MatchOptions(..)
                                      , compDefault, compPosix
                                      , matchDefault, matchPosix
                                      , compile, compileWith, tryCompileWith
                                      , decompile
                                      , isLiteral
                                      )
import System.FilePath.Glob.Directory ( GlobOptions(..), globDefault
                                      , globDir, globDirWith, globDir1, glob
                                      , commonDirectory
                                      )
import System.FilePath.Glob.Match     (match, matchWith)
import System.FilePath.Glob.Simplify  (simplify)