32 lines
656 B
Factor
32 lines
656 B
Factor
|
|
USING: kernel fry io io.files io.encodings.ascii sequences
|
|
regexp command-line namespaces ;
|
|
|
|
IN: tools.grep
|
|
|
|
! TODO: getopt
|
|
! TODO: color
|
|
! TODO: case-insensitive
|
|
|
|
: grep-lines ( regexpt -- )
|
|
'[ dup _ matches? [ print ] [ drop ] if ] each-line ;
|
|
|
|
: grep-file ( pattern filename -- )
|
|
ascii [ grep-lines ] with-file-reader ;
|
|
|
|
: grep-usage ( -- )
|
|
"Usage: factor grep.factor <pattern> [<file>...]" print ;
|
|
|
|
: run-grep ( -- )
|
|
command-line get [
|
|
grep-usage
|
|
] [
|
|
unclip ".*" dup surround <regexp> swap [
|
|
grep-lines
|
|
] [
|
|
[ grep-file ] with each
|
|
] if-empty
|
|
] if-empty ;
|
|
|
|
MAIN: run-grep
|