cgrep 6.5.8 → 6.5.9
raw patch · 7 files changed
+35/−21 lines, 7 filesdep +regex-basedep +regex-pcre
Dependencies added: regex-base, regex-pcre
Files
- README.md +9/−8
- cgrep.cabal +3/−1
- src/CGrep/CGrep.hs +9/−7
- src/CGrep/Strategy/Regex.hs +9/−2
- src/CmdOptions.hs +2/−1
- src/Config.hs +1/−1
- src/Options.hs +2/−1
README.md view
@@ -4,19 +4,20 @@ Usage ----- -Cgrep 6.5.8 Usage: cgrep [OPTION] [PATTERN] files...+Cgrep 6.5.9 Usage: cgrep [OPTION] [PATTERN] files... cgrep [OPTIONS] [ITEM] Pattern: - -f --file=FILE read PATTERNs from file (one per line)- -w --word force word matching- -p --prefix force prefix matching- -s --suffix force suffix matching- -e --edit use edit distance- -i --ignore-case ignore case distinctions- -G --regex regex matching+ -f --file=FILE Read PATTERNs from file (one per line)+ -w --word Force word matching+ -p --prefix Force prefix matching+ -s --suffix Force suffix matching+ -e --edit Use edit distance+ -G --regex Use regex matching (posix)+ -P --regex-pcre Use regex matching (pcre)+ -i --ignore-case Ignore case distinctions Context filters (generic):
cgrep.cabal view
@@ -1,6 +1,6 @@ Name: cgrep Description: Cgrep: a context-aware grep for source codes-Version: 6.5.8+Version: 6.5.9 Synopsis: Command line tool Homepage: http://awgn.github.io/cgrep/ License: GPL-2@@ -41,7 +41,9 @@ safe >=0.3, stringsearch >=0.3, unordered-containers >=0.1, + regex-base >=0.90, regex-posix >=0.90,+ regex-pcre >=0.90, either >= 4.0, mtl >= 2.0, unix-compat >= 0.4,
src/CGrep/CGrep.hs view
@@ -67,17 +67,19 @@ } = i || k || d || h || n || s || c || o +isRegexp :: Options -> Bool+isRegexp opt = regex_posix opt || regex_pcre opt runCgrep :: FilePath -> [Text8] -> ReaderT Options IO [Output] runCgrep filename patterns = do opt <- ask case () of- _ | not (regex opt) && not (hasTokenizerOpt opt) && not (semantic opt) && edit_dist opt -> Levenshtein.search filename patterns- | not (regex opt) && not (hasTokenizerOpt opt) && not (semantic opt) -> BoyerMoore.search filename patterns- | not (regex opt) && semantic opt && hasLanguage filename opt [C,Cpp] -> CppSemantic.search filename patterns- | not (regex opt) && semantic opt -> Semantic.search filename patterns- | not (regex opt) -> CppTokenizer.search filename patterns- | regex opt -> Regex.search filename patterns- | otherwise -> undefined+ _ | (not . isRegexp) opt && not (hasTokenizerOpt opt) && not (semantic opt) && edit_dist opt -> Levenshtein.search filename patterns+ | (not . isRegexp) opt && not (hasTokenizerOpt opt) && not (semantic opt) -> BoyerMoore.search filename patterns+ | (not . isRegexp) opt && semantic opt && hasLanguage filename opt [C,Cpp] -> CppSemantic.search filename patterns+ | (not . isRegexp) opt && semantic opt -> Semantic.search filename patterns+ | (not . isRegexp) opt -> CppTokenizer.search filename patterns+ | isRegexp opt -> Regex.search filename patterns+ | otherwise -> undefined
src/CGrep/Strategy/Regex.hs view
@@ -24,7 +24,11 @@ import Control.Monad.Trans.Reader import Control.Monad.IO.Class++import Text.Regex.Base import Text.Regex.Posix+import Text.Regex.PCRE+ import Data.Array import CGrep.Common@@ -36,6 +40,7 @@ import Debug + search :: FilePath -> [Text8] -> ReaderT Options IO [Output] search f patterns = do @@ -53,10 +58,12 @@ -- search for matching tokens + (=~~~) = if regex_pcre opt then (Text.Regex.PCRE.=~) else (Text.Regex.Posix.=~)+ tokens = map (\(str, (off,_)) -> (off, C.unpack str) ) $- concatMap elems $ patterns >>= (\p -> elems (getAllTextMatches $ text''' =~ p :: (Array Int) (MatchText Text8)))+ concatMap elems $ patterns >>= (\p -> elems (getAllTextMatches $ text''' =~~~ p :: (Array Int) (MatchText Text8))) - putStrLevel1 $ "strategy : running regex search on " ++ filename ++ "..."+ putStrLevel1 $ "strategy : running regex " ++ (if regex_pcre opt then "(pcre)" else "(posix)") ++ " search on " ++ filename ++ "..." putStrLevel2 $ "tokens : " ++ show tokens putStrLevel3 $ "---\n" ++ C.unpack text''' ++ "\n---"
src/CmdOptions.hs view
@@ -30,7 +30,8 @@ , prefix_match = False &= help "Force prefix matching" &=explicit &= name "prefix" &= name "p" , suffix_match = False &= help "Force suffix matching" &=explicit &= name "suffix" &= name "s" , edit_dist = False &= help "Use edit distance" &=explicit &= name "edit" &= name "e"- , regex = False &= help "Use regex matching" &= explicit &= name "G" &=name "regex"+ , regex_posix = False &= help "Use regex matching (posix)" &= explicit &= name "G" &=name "regex"+ , regex_pcre = False &= help "Use regex matching (pcre)" &= explicit &= name "P" &=name "regex-pcre" , ignore_case = False &= help "Ignore case distinctions" , code = False &= groupname "\nContext filters (generic)" &= help "Enable search in source code" &= explicit &= name "c" &= name "code" , comment = False &= help "Enable search in comments" &= explicit &= name "m" &= name "comment"
src/Config.hs view
@@ -33,7 +33,7 @@ cgreprc = "cgreprc" version :: String-version = "6.5.8"+version = "6.5.9" data Config = Config
src/Options.hs view
@@ -29,8 +29,9 @@ , prefix_match :: Bool , suffix_match :: Bool , edit_dist :: Bool+ , regex_posix :: Bool+ , regex_pcre :: Bool , ignore_case :: Bool- , regex :: Bool -- Context: , code :: Bool , comment :: Bool