1+ var _ = require ( "lodash" ) ;
2+
3+ var escapeRegExp = function ( str ) {
4+ return str . replace ( / ( [ . * + ? \^ $ { } ( ) | \[ \] \/ \\ ] ) / g, "\\$1" ) ;
5+ } ;
6+
7+ // taken from http://xregexp.com/
8+ var grepEscapeRegExp = function ( str ) {
9+ return str . replace ( / [ [ \] { } ( ) * + ? . , \\ ^ $ | # \s " ' ] / g, "\\$&" ) ;
10+ } ;
11+
12+ var escapeShell = function ( str ) {
13+ return str . replace ( / ( [ \\ " ' ` $ \s \( \) < > ] ) / g, "\\$1" ) ;
14+ } ;
15+
16+
17+ // file types
18+ var IGNORE_DIRS = {
19+ ".bzr" : "Bazaar" ,
20+ ".cdv" : "Codeville" ,
21+ "~.dep" : "Interface Builder" ,
22+ "~.dot" : "Interface Builder" ,
23+ "~.nib" : "Interface Builder" ,
24+ "~.plst" : "Interface Builder" ,
25+ ".git" : "Git" ,
26+ ".hg" : "Mercurial" ,
27+ ".pc" : "quilt" ,
28+ ".svn" : "Subversion" ,
29+ "_MTN" : "Monotone" ,
30+ "blib" : "Perl module building" ,
31+ "CVS" : "CVS" ,
32+ "RCS" : "RCS" ,
33+ "SCCS" : "SCCS" ,
34+ "_darcs" : "darcs" ,
35+ "_sgbak" : "Vault/Fortress" ,
36+ "autom4te.cache" : "autoconf" ,
37+ "cover_db" : "Devel::Cover" ,
38+ "_build" : "Module::Build" ,
39+ "node_modules" : "Node" ,
40+ } ;
41+
42+ var MAPPINGS = {
43+ "actionscript" : [ "as" , "mxml" ] ,
44+ "ada" : [ "ada" , "adb" , "ads" ] ,
45+ "asm" : [ "asm" , "s" ] ,
46+ "batch" : [ "bat" , "cmd" ] ,
47+ //"binary" : q{Binary files, as defined by Perl's -B op (default: off)},
48+ "cc" : [ "c" , "h" , "xs" ] ,
49+ "cfmx" : [ "cfc" , "cfm" , "cfml" ] ,
50+ "clojure" : [ "clj" ] ,
51+ "cpp" : [ "cpp" , "cc" , "cxx" , "m" , "hpp" , "hh" , "h" , "hxx" ] ,
52+ "csharp" : [ "cs" ] ,
53+ "css" : [ "css" , "less" , "scss" , "sass" ] ,
54+ "coffee" : [ "coffee" ] ,
55+ "elisp" : [ "el" ] ,
56+ "erlang" : [ "erl" , "hrl" ] ,
57+ "fortran" : [ "f" , "f77" , "f90" , "f95" , "f03" , "for" , "ftn" , "fpp" ] ,
58+ "haskell" : [ "hs" , "lhs" ] ,
59+ "hh" : [ "h" ] ,
60+ "html" : [ "htm" , "html" , "shtml" , "xhtml" ] ,
61+ "jade" : [ "jade" ] ,
62+ "java" : [ "java" , "properties" ] ,
63+ "groovy" : [ "groovy" ] ,
64+ "js" : [ "js" ] ,
65+ "json" : [ "json" ] ,
66+ "latex" : [ "latex" , "ltx" ] ,
67+ "jsp" : [ "jsp" , "jspx" , "jhtm" , "jhtml" ] ,
68+ "lisp" : [ "lisp" , "lsp" ] ,
69+ "logiql" : [ "logic" , "lql" ] ,
70+ "lua" : [ "lua" ] ,
71+ "make" : [ "makefile" , "Makefile" ] ,
72+ "mason" : [ "mas" , "mhtml" , "mpl" , "mtxt" ] ,
73+ "markdown" : [ "md" , "markdown" ] ,
74+ "objc" : [ "m" , "h" ] ,
75+ "objcpp" : [ "mm" , "h" ] ,
76+ "ocaml" : [ "ml" , "mli" ] ,
77+ "parrot" : [ "pir" , "pasm" , "pmc" , "ops" , "pod" , "pg" , "tg" ] ,
78+ "perl" : [ "pl" , "pm" , "pod" , "t" ] ,
79+ "php" : [ "php" , "phpt" , "php3" , "php4" , "php5" , "phtml" ] ,
80+ "plone" : [ "pt" , "cpt" , "metadata" , "cpy" , "py" ] ,
81+ "powershell" : [ "ps1" ] ,
82+ "python" : [ "py" ] ,
83+ "rake" : [ "rakefile" ] ,
84+ "ruby" : [ "rb" , "ru" , "rhtml" , "rjs" , "rxml" , "erb" , "rake" , "gemspec" ] ,
85+ "scala" : [ "scala" ] ,
86+ "scheme" : [ "scm" , "ss" ] ,
87+ "shell" : [ "sh" , "bash" , "csh" , "tcsh" , "ksh" , "zsh" ] ,
88+ //"skipped" : "q"{"Files but not directories normally skipped by ack ("default": "off")},
89+ "smalltalk" : [ "st" ] ,
90+ "sql" : [ "sql" , "ctl" ] ,
91+ "tcl" : [ "tcl" , "itcl" , "itk" ] ,
92+ "tex" : [ "tex" , "cls" , "sty" ] ,
93+ "text" : [ "txt" ] ,
94+ "textile" : [ "textile" ] ,
95+ "tt" : [ "tt" , "tt2" , "ttml" ] ,
96+ "vb" : [ "bas" , "cls" , "frm" , "ctl" , "vb" , "resx" ] ,
97+ "vim" : [ "vim" ] ,
98+ "yaml" : [ "yaml" , "yml" ] ,
99+ "xml" : [ "xml" , "dtd" , "xslt" , "ent" , "rdf" , "rss" , "svg" , "wsdl" , "atom" , "mathml" , "mml" ]
100+ } ;
101+ var exts = [ ] ;
102+ for ( var type in MAPPINGS ) {
103+ exts = exts . concat ( MAPPINGS [ type ] ) ;
104+ }
105+ // grep pattern matching for extensions
106+ var PATTERN_EXT = _ . unique ( exts ) . join ( "," ) ;
107+
108+ var dirs = _ . keys ( IGNORE_DIRS ) ;
109+ var PATTERN_DIR = escapeRegExp ( dirs . join ( "|" ) ) ;
110+ var PATTERN_EDIR = " --exclude-dir=" + dirs . join ( " --exclude-dir=" ) ;
111+
112+ module . exports = {
113+ 'grepEscapeRegExp' : grepEscapeRegExp ,
114+ 'escapeRegExp' : escapeRegExp ,
115+ 'escapeShell' : escapeShell ,
116+
117+ 'PATTERN_EXT' : PATTERN_EXT ,
118+ 'PATTERN_DIR' : PATTERN_DIR ,
119+ 'PATTERN_EDIR' : PATTERN_EDIR
120+ } ;
0 commit comments