cgrep 6.4.16 → 6.4.17
raw patch · 6 files changed
+38/−25 lines, 6 files
Files
- README.md +1/−1
- cgrep.cabal +1/−1
- src/CGrep/Semantic/WildCard.hs +19/−1
- src/CGrep/Strategy/Cpp/Semantic.hs +9/−13
- src/CGrep/Strategy/Generic/Semantic.hs +7/−8
- src/Config.hs +1/−1
README.md view
@@ -4,7 +4,7 @@ Usage ----- -Cgrep 6.4.16 Usage: cgrep [OPTION] [PATTERN] files...+Cgrep 6.4.17 Usage: cgrep [OPTION] [PATTERN] files... cgrep [OPTIONS] [ITEM]
cgrep.cabal view
@@ -1,6 +1,6 @@ Name: cgrep Description: Cgrep: a context-aware grep for source codes-Version: 6.4.16+Version: 6.4.17 Synopsis: Command line tool Homepage: http://awgn.github.io/cgrep/ License: GPL-2
src/CGrep/Semantic/WildCard.hs view
@@ -19,6 +19,8 @@ module CGrep.Semantic.WildCard (WildCard(..), MultiCard, filterTokensWithMultiCards, wildCardMatch,+ isWildCardPattern,+ rmWildCardEscape, multiCardMatch) where import qualified Data.Map as M@@ -79,6 +81,22 @@ where ts = multiCardGroupCompare opt l r +isWildCardPattern :: String -> Bool+isWildCardPattern s =+ case () of+ _ | (x:y:_) <- s -> wprefix x && not (wprefix y)+ | [x] <- s -> wprefix x+ | otherwise -> error "isWildCardPattern"+ where wprefix x = x == '$' || x == '_'+++rmWildCardEscape :: String -> String+rmWildCardEscape ('$':'_':xs) = '_' : xs+rmWildCardEscape ('_':'_':xs) = '_' : xs+rmWildCardEscape ('$':'$':xs) = '$' : xs+rmWildCardEscape xs = xs++ {-# INLINE multiCardCompareAll #-} multiCardCompareAll :: [(Bool, (MultiCard a, [String]))] -> Bool@@ -127,7 +145,7 @@ tokensZip :: (SemanticToken a) => Options -> MultiCard a -> a -> (Bool, (MultiCard a, [String])) tokensZip opt l r | multiCardMatch opt l r = (True, (l, [tkToString r]))- | otherwise = (False, ([AnyCard],[] ))+ | otherwise = (False, ([AnyCard],[] )) multiCardMatch :: (SemanticToken t) => Options -> MultiCard t -> t -> Bool
src/CGrep/Strategy/Cpp/Semantic.hs view
@@ -55,10 +55,8 @@ -- pre-process patterns patterns = map (Cpp.tokenizer . contextFilter (Just Cpp) filt) ps -- [ [t1,t2,..], [t1,t2...] ]-- patterns' = map (map mkWildCard) patterns -- [ [w1,w2,..], [w1,w2,..] ]-- patterns'' = map (combineMultiCard . map (:[])) patterns' -- [ [m1,m2,..], [m1,m2,..] ] == [ [ [w1], [w2],..], [[w1],[w2],..]]+ patterns' = map (map mkWildCard) patterns -- [ [w1,w2,..], [w1,w2,..] ]+ patterns'' = map (combineMultiCard . map (:[])) patterns' -- [ [m1,m2,..], [m1,m2,..] ] == [ [ [w1], [w2],..], [[w1],[w2],..]] -- quick Search... @@ -130,14 +128,12 @@ ("LIT", LiteralCard ) ] - mkWildCard :: Cpp.Token -> WildCard Cpp.Token-mkWildCard t@(Cpp.TokenIdentifier s _) =+mkWildCard t@(Cpp.TokenIdentifier s off) = case () of _ | Just wc <- M.lookup str wildCardMap -> wc- | ('$':_) <- s -> IdentifCard str- | ('_':_) <- s -> IdentifCard str- | otherwise -> TokenCard t+ | isWildCardPattern s -> IdentifCard str+ | otherwise -> TokenCard $ Cpp.TokenIdentifier (rmWildCardEscape s) off where str = tkToString t mkWildCard t = TokenCard t @@ -145,9 +141,9 @@ combineMultiCard :: [MultiCard Cpp.Token] -> [MultiCard Cpp.Token] combineMultiCard (m1:r@(m2:m3:ms)) | [TokenCard (Cpp.TokenIdentifier {Cpp.toString = "OR"})] <- m2 = combineMultiCard $ (m1++m3):ms- | otherwise = m1 : combineMultiCard r-combineMultiCard [m1,m2] = [m1,m2]-combineMultiCard [m1] = [m1]-combineMultiCard [] = []+ | otherwise = m1 : combineMultiCard r+combineMultiCard [m1,m2] = [m1,m2]+combineMultiCard [m1] = [m1]+combineMultiCard [] = []
src/CGrep/Strategy/Generic/Semantic.hs view
@@ -120,12 +120,11 @@ mkWildCard :: Generic.Token -> WildCard Generic.Token-mkWildCard t@(Generic.TokenAlpha s _) =+mkWildCard t@(Generic.TokenAlpha s off) = case () of _ | Just wc <- M.lookup str wildCardMap -> wc- | ('$':_) <- s -> IdentifCard str- | ('_':_) <- s -> IdentifCard str- | otherwise -> TokenCard t+ | isWildCardPattern s -> IdentifCard str+ | otherwise -> TokenCard $ Generic.TokenAlpha (rmWildCardEscape s) off where str = tkToString t mkWildCard t = TokenCard t @@ -133,9 +132,9 @@ combineMultiCard :: [MultiCard Generic.Token] -> [MultiCard Generic.Token] combineMultiCard (m1:r@(m2:m3:ms)) | [TokenCard (Generic.TokenAlpha {Generic.toString = "OR"})] <- m2 = combineMultiCard $ (m1++m3):ms- | otherwise = m1 : combineMultiCard r-combineMultiCard [m1,m2] = [m1,m2]-combineMultiCard [m1] = [m1]-combineMultiCard [] = []+ | otherwise = m1 : combineMultiCard r+combineMultiCard [m1,m2] = [m1,m2]+combineMultiCard [m1] = [m1]+combineMultiCard [] = []
src/Config.hs view
@@ -31,7 +31,7 @@ cgreprc = "cgreprc" version :: String-version = "6.4.16"+version = "6.4.17" data Config = Config