cgrep 6.5.6 → 6.5.7
raw patch · 5 files changed
+89/−87 lines, 5 files
Files
- README.md +1/−1
- cgrep.cabal +1/−1
- src/CGrep/Filter.hs +40/−42
- src/CGrep/Lang.hs +42/−38
- src/CGrep/Semantic/Generic/Token.hs +5/−5
README.md view
@@ -4,7 +4,7 @@ Usage ----- -Cgrep 6.5.6 Usage: cgrep [OPTION] [PATTERN] files...+Cgrep 6.5.7 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.5.6+Version: 6.5.7 Synopsis: Command line tool Homepage: http://awgn.github.io/cgrep/ License: GPL-2
src/CGrep/Filter.hs view
@@ -177,8 +177,8 @@ filterFunctionMap :: Map.Map Lang FilterFunction -mkFilterFunction :: [StringBoundary] -> [StringBoundary] -> FilterFunction-mkFilterFunction cs ls = contextFilterFun (ParConf (map (\(a,b) -> Boundary (C.pack a) (C.pack b)) cs)+mkContextFilterFun :: [StringBoundary] -> [StringBoundary] -> FilterFunction+mkContextFilterFun cs ls = contextFilterFun (ParConf (map (\(a,b) -> Boundary (C.pack a) (C.pack b)) cs) (map (\(a,b) -> Boundary (C.pack a) (C.pack b)) ls) (mkBloom (cs ++ ls))) @@ -187,45 +187,43 @@ mkBloom bs = listArray ('\0', '\255') (map (\c -> findIndex' (\(b,_) -> c == head b) bs >= 0 ) ['\0'..'\255']) -filterFunctionMap = Map.fromList [- (C, mkFilterFunction [("/*", "*/"), ("//", "\n")] [("\"", "\"")] ),- (Cpp, mkFilterFunction [("/*", "*/"), ("//", "\n")] [("\"", "\"")] ),- (Cabal, mkFilterFunction [("--", "\n")] [("\"", "\"")] ),- (Csharp, mkFilterFunction [("/*", "*/"), ("//", "\n")] [("\"", "\"")] ),- (Chapel, mkFilterFunction [("/*", "*/"), ("//", "\n")] [("\"", "\"")] ),- (Coffee, mkFilterFunction [("###", "###"), ("#", "\n")] [("\"", "\"")] ),- (Conf, mkFilterFunction [("#", "\n")] [("'", "'"), ("\"", "\"")] ),- (D, mkFilterFunction [("/*", "*/"), ("//", "\n")] [("\"", "\"")] ),- (Go, mkFilterFunction [("/*", "*/"), ("//", "\n")] [("\"", "\"")] ),- (Java, mkFilterFunction [("/*", "*/"), ("//", "\n")] [("\"", "\"")] ),- (Javascript, mkFilterFunction [("/*", "*/"), ("//", "\n")] [("\"", "\"")] ),- (ObjectiveC, mkFilterFunction [("/*", "*/"), ("//", "\n")] [("\"", "\"")] ),- (Scala, mkFilterFunction [("/*", "*/"), ("//", "\n")] [("\"", "\"")] ),- (Verilog, mkFilterFunction [("/*", "*/"), ("//", "\n")] [("\"", "\"")] ),- (VHDL, mkFilterFunction [("--", "\n")] [("\"", "\"")] ),-- (Haskell, mkFilterFunction [("{-", "-}"), ("--", "\n")] [("\"", "\""), ("[r|", "|]"), ("[q|", "|]"), ("[s|", "|]"), ("[here|","|]"), ("[i|", "|]")] ),- (Fsharp, mkFilterFunction [("(*", "*)"), ("//", "\n")] [("\"", "\"")] ),- (Perl, mkFilterFunction [("=pod", "=cut"), ("#", "\n")] [("'", "'"), ("\"", "\"")] ),- (Ruby, mkFilterFunction [("=begin", "=end"), ("#", "\n")] [("'", "'"), ("\"", "\""), ("%|", "|"), ("%q(", ")"), ("%Q(", ")") ]),-- (CMake, mkFilterFunction [("#", "\n")] [("\"", "\"")] ),- (Awk, mkFilterFunction [("#", "\n")] [("\"", "\"")] ),- (Tcl, mkFilterFunction [("#", "\n")] [("\"", "\"")] ),- (Shell, mkFilterFunction [("#", "\n")] [("'", "'"), ("\"", "\"")] ),- (Make, mkFilterFunction [("#", "\n")] [("'", "'"), ("\"", "\"")] ),-- (Css, mkFilterFunction [("/*", "*/")] [("\"", "\"")] ),- (OCaml, mkFilterFunction [("(*", "*)")] [("\"", "\"")] ),- (Python, mkFilterFunction [("#", "\n")] [("\"\"\"", "\"\"\""), ("'''", "'''"), ("'", "'"), ("\"", "\"")] ),-- (Erlang, mkFilterFunction [("%", "\n")] [("\"", "\"")] ),- (Latex, mkFilterFunction [("%", "\n")] [("\"", "\"")] ),- (Lua, mkFilterFunction [("--[[","--]]"), ("--", "\n")] [("'", "'"), ("\"", "\""), ("[===[", "]===]"), ("[==[", "]==]"), ("[=[", "]=]"), ("[[", "]]") ] ),-- (Html, mkFilterFunction [("<!--", "-->")] [("\"", "\"")] ),- (Vim, mkFilterFunction [("\"", "\n")] [("'", "'")] ),-- (PHP, mkFilterFunction [("/*", "*/"), ("//", "\n"), ("#", "\n") ] [("'", "'"), ("\"", "\"")] )+filterFunctionMap = Map.fromList+ [ (Awk, mkContextFilterFun [("#", "\n")] [("\"", "\"")] )+ , (C, mkContextFilterFun [("/*", "*/"), ("//", "\n")] [("\"", "\"")] )+ , (CMake, mkContextFilterFun [("#", "\n")] [("\"", "\"")] )+ , (Cabal, mkContextFilterFun [("--", "\n")] [("\"", "\"")] )+ , (Chapel, mkContextFilterFun [("/*", "*/"), ("//", "\n")] [("\"", "\"")] )+ , (Clojure, mkContextFilterFun [(";", "\n")] [("\"", "\"")] )+ , (Coffee, mkContextFilterFun [("###", "###"), ("#", "\n")] [("\"", "\"")] )+ , (Conf, mkContextFilterFun [("#", "\n")] [("'", "'"), ("\"", "\"")] )+ , (Cpp, mkContextFilterFun [("/*", "*/"), ("//", "\n")] [("\"", "\"")] )+ , (Csharp, mkContextFilterFun [("/*", "*/"), ("//", "\n")] [("\"", "\"")] )+ , (Css, mkContextFilterFun [("/*", "*/")] [("\"", "\"")] )+ , (D, mkContextFilterFun [("/*", "*/"), ("//", "\n")] [("\"", "\"")] )+ , (Elixir, mkContextFilterFun [("#", "\n")] [("\"", "\"")] )+ , (Erlang, mkContextFilterFun [("%", "\n")] [("\"", "\"")] )+ , (Fsharp, mkContextFilterFun [("(*", "*)"), ("//", "\n")] [("\"", "\"")] )+ , (Go, mkContextFilterFun [("/*", "*/"), ("//", "\n")] [("\"", "\"")] )+ , (Haskell, mkContextFilterFun [("{-", "-}"), ("--", "\n")] [("\"", "\""), ("[r|", "|]"), ("[q|", "|]"), ("[s|", "|]"), ("[here|","|]"), ("[i|", "|]")] )+ , (Html, mkContextFilterFun [("<!--", "-->")] [("\"", "\"")] )+ , (Idris, mkContextFilterFun [("{-", "-}"), ("--", "\n"), ("|||", "\n")] [("\"", "\"")] )+ , (Java, mkContextFilterFun [("/*", "*/"), ("//", "\n")] [("\"", "\"")] )+ , (Javascript, mkContextFilterFun [("/*", "*/"), ("//", "\n")] [("\"", "\"")] )+ , (Latex, mkContextFilterFun [("%", "\n")] [("\"", "\"")] )+ , (Lua, mkContextFilterFun [("--[[","--]]"), ("--", "\n")] [("'", "'"), ("\"", "\""), ("[===[", "]===]"), ("[==[", "]==]"), ("[=[", "]=]"), ("[[", "]]") ] )+ , (Make, mkContextFilterFun [("#", "\n")] [("'", "'"), ("\"", "\"")] )+ , (OCaml, mkContextFilterFun [("(*", "*)")] [("\"", "\"")] )+ , (ObjectiveC, mkContextFilterFun [("/*", "*/"), ("//", "\n")] [("\"", "\"")] )+ , (PHP, mkContextFilterFun [("/*", "*/"), ("//", "\n"), ("#", "\n") ] [("'", "'"), ("\"", "\"")] )+ , (Perl, mkContextFilterFun [("=pod", "=cut"), ("#", "\n")] [("'", "'"), ("\"", "\"")] )+ , (Python, mkContextFilterFun [("#", "\n")] [("\"\"\"", "\"\"\""), ("'''", "'''"), ("'", "'"), ("\"", "\"")] )+ , (Ruby, mkContextFilterFun [("=begin", "=end"), ("#", "\n")] [("'", "'"), ("\"", "\""), ("%|", "|"), ("%q(", ")"), ("%Q(", ")") ])+ , (Scala, mkContextFilterFun [("/*", "*/"), ("//", "\n")] [("\"", "\"")] )+ , (Shell, mkContextFilterFun [("#", "\n")] [("'", "'"), ("\"", "\"")] )+ , (Tcl, mkContextFilterFun [("#", "\n")] [("\"", "\"")] )+ , (VHDL, mkContextFilterFun [("--", "\n")] [("\"", "\"")] )+ , (Verilog, mkContextFilterFun [("/*", "*/"), ("//", "\n")] [("\"", "\"")] )+ , (Vim, mkContextFilterFun [("\"", "\n")] [("'", "'")] ) ]+
src/CGrep/Lang.hs view
@@ -28,9 +28,10 @@ import Options import Util -data Lang = Awk | C | Cpp | Cabal | Csharp | Chapel | Coffee | Conf | Css | CMake | D | Erlang | Fsharp | Go | Haskell |- Html | Java | Javascript | Latex | Lua | Make | OCaml | ObjectiveC |- Perl | PHP | Python | Ruby | Scala | Tcl | Text | Shell | Verilog | VHDL | Vim+data Lang = Awk | C | CMake | Cabal | Chapel | Clojure | Coffee | Conf | Cpp | Csharp | Css |+ D | Elixir | Erlang | Fsharp | Go | Haskell | Html | Idris | Java | Javascript | Latex |+ Lua | Make | OCaml | ObjectiveC | PHP | Perl | Python | Ruby | Scala | Shell | Tcl |+ Text | VHDL | Verilog | Vim deriving (Read, Show, Eq, Ord, Bounded) @@ -48,41 +49,44 @@ langMap :: LangMapType-langMap = Map.fromList [- (Awk, [Ext "awk", Ext "mawk", Ext "gawk"]),- (C, [Ext "c", Ext "C"]),- (Cpp, [Ext "cpp", Ext "CPP", Ext "cxx", Ext "cc", Ext "cp", Ext "tcc", Ext "h", Ext "H", Ext "hpp", Ext "ipp", Ext "HPP", Ext "hxx", Ext "hh", Ext "hp"]),- (Cabal, [Ext "cabal"]),- (Csharp, [Ext "cs", Ext "CS"]),- (Coffee, [Ext "coffee"]),- (Conf, [Ext "conf", Ext "cfg", Ext "doxy"]),- (Chapel, [Ext "chpl"]),- (Css, [Ext "css"]),- (CMake, [Name "CMakeLists.txt", Ext "cmake"]),- (D, [Ext "d", Ext "D"]),- (Erlang, [Ext "erl", Ext "ERL",Ext "hrl", Ext "HRL"]),- (Fsharp, [Ext "fs", Ext "fsx", Ext "fsi"]),- (Go, [Ext "go"]),- (Haskell, [Ext "hs", Ext "lhs", Ext "hsc"]),- (Html, [Ext "htm", Ext "html"]),- (Java, [Ext "java"]),- (Javascript,[Ext "js"]),- (Latex, [Ext "latex", Ext "tex"]),- (Lua, [Ext "lua"]),- (Make, [Name "Makefile", Name "makefile", Name "GNUmakefile", Ext "mk", Ext "mak"]),- (OCaml , [Ext "ml", Ext "mli"]),- (ObjectiveC,[Ext "m", Ext "mi"]),- (Perl, [Ext "pl", Ext "pm", Ext "pm6", Ext "plx", Ext "perl"]),- (PHP, [Ext "php", Ext "php3", Ext "php4", Ext "php5",Ext "phtml"]),- (Python, [Ext "py", Ext "pyx", Ext "pxd", Ext "pxi", Ext "scons"]),- (Ruby, [Ext "rb", Ext "ruby"]),- (Scala, [Ext "scala"]),- (Tcl, [Ext "tcl", Ext "tk"]),- (Text, [Ext "txt", Ext "md", Name "README", Name "INSTALL"]),- (Shell, [Ext "sh", Ext "bash", Ext "csh", Ext "tcsh", Ext "ksh", Ext "zsh"]),- (Verilog, [Ext "v", Ext "vh", Ext "sv"]),- (VHDL, [Ext "vhd", Ext "vhdl"]),- (Vim, [Ext "vim"])+langMap = Map.fromList+ [ (Awk, [Ext "awk", Ext "mawk", Ext "gawk"])+ , (C, [Ext "c", Ext "C"])+ , (CMake, [Name "CMakeLists.txt", Ext "cmake"])+ , (Cabal, [Ext "cabal"])+ , (Chapel, [Ext "chpl"])+ , (Clojure, [Ext "clj", Ext "cljs", Ext "cljc", Ext "edn"])+ , (Coffee, [Ext "coffee"])+ , (Conf, [Ext "config", Ext "conf", Ext "cfg", Ext "doxy"])+ , (Cpp, [Ext "cpp", Ext "CPP", Ext "cxx", Ext "cc", Ext "cp", Ext "tcc", Ext "h", Ext "H", Ext "hpp", Ext "ipp", Ext "HPP", Ext "hxx", Ext "hh", Ext "hp"])+ , (Csharp, [Ext "cs", Ext "CS"])+ , (Css, [Ext "css"])+ , (D, [Ext "d", Ext "D"])+ , (Elixir, [Ext "ex", Ext "exs"])+ , (Erlang, [Ext "erl", Ext "ERL",Ext "hrl", Ext "HRL"])+ , (Fsharp, [Ext "fs", Ext "fsx", Ext "fsi"])+ , (Go, [Ext "go"])+ , (Haskell, [Ext "hs", Ext "lhs", Ext "hsc"])+ , (Html, [Ext "htm", Ext "html"])+ , (Idris, [Ext "idr", Ext "lidr"])+ , (Java, [Ext "java"])+ , (Javascript,[Ext "js"])+ , (Latex, [Ext "latex", Ext "tex"])+ , (Lua, [Ext "lua"])+ , (Make, [Name "Makefile", Name "makefile", Name "GNUmakefile", Ext "mk", Ext "mak"])+ , (OCaml , [Ext "ml", Ext "mli"])+ , (ObjectiveC,[Ext "m", Ext "mi"])+ , (PHP, [Ext "php", Ext "php3", Ext "php4", Ext "php5",Ext "phtml"])+ , (Perl, [Ext "pl", Ext "pm", Ext "pm6", Ext "plx", Ext "perl"])+ , (Python, [Ext "py", Ext "pyx", Ext "pxd", Ext "pxi", Ext "scons"])+ , (Ruby, [Ext "rb", Ext "ruby"])+ , (Scala, [Ext "scala"])+ , (Shell, [Ext "sh", Ext "bash", Ext "csh", Ext "tcsh", Ext "ksh", Ext "zsh"])+ , (Tcl, [Ext "tcl", Ext "tk"])+ , (Text, [Ext "txt", Ext "md", Ext "markdown", Ext "mdown", Ext "mkdn", Ext "mkd", Ext "mdwn", Ext "mdtxt", Ext "mdtext", Ext "text", Name "README", Name "INSTALL", Name "VERSION", Name "LICENSE", Name "AUTHORS", Name "CHANGELOG"])+ , (VHDL, [Ext "vhd", Ext "vhdl"])+ , (Verilog, [Ext "v", Ext "vh", Ext "sv"])+ , (Vim, [Ext "vim"]) ]
src/CGrep/Semantic/Generic/Token.hs view
@@ -45,11 +45,11 @@ data Token =- TokenAlpha { toString :: String, toOffset :: Offset } |- TokenDigit { toString :: String, toOffset :: Offset } |- TokenBracket { toString :: String, toOffset :: Offset } |- TokenLiteral { toString :: String, toOffset :: Offset } |- TokenOther { toString :: String, toOffset :: Offset }+ TokenAlpha { toString :: !String, toOffset :: {-# UNPACK #-} !Offset } |+ TokenDigit { toString :: !String, toOffset :: {-# UNPACK #-} !Offset } |+ TokenBracket { toString :: !String, toOffset :: {-# UNPACK #-} !Offset } |+ TokenLiteral { toString :: !String, toOffset :: {-# UNPACK #-} !Offset } |+ TokenOther { toString :: !String, toOffset :: {-# UNPACK #-} !Offset } deriving (Show, Eq, Ord)