From 197b944c7ec1832aef1a8a99ee8b01a9dce9e41f Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Wed, 1 Apr 2015 14:41:41 -0700 Subject: [PATCH] tools.grep: adding "grep" tool. --- extra/tools/grep/deploy.factor | 15 +++++++++++++++ extra/tools/grep/grep.factor | 31 +++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 extra/tools/grep/deploy.factor create mode 100644 extra/tools/grep/grep.factor diff --git a/extra/tools/grep/deploy.factor b/extra/tools/grep/deploy.factor new file mode 100644 index 0000000000..f9f04c0a5c --- /dev/null +++ b/extra/tools/grep/deploy.factor @@ -0,0 +1,15 @@ +USING: tools.deploy.config ; +H{ + { deploy-name "grep" } + { deploy-ui? f } + { deploy-c-types? t } + { deploy-console? t } + { deploy-unicode? f } + { "stop-after-last-window?" t } + { deploy-io 3 } + { deploy-reflection 6 } + { deploy-word-props? t } + { deploy-math? t } + { deploy-threads? t } + { deploy-word-defs? t } +} diff --git a/extra/tools/grep/grep.factor b/extra/tools/grep/grep.factor new file mode 100644 index 0000000000..e600e0a4e1 --- /dev/null +++ b/extra/tools/grep/grep.factor @@ -0,0 +1,31 @@ + +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 [...]" print ; + +: run-grep ( -- ) + command-line get [ + grep-usage + ] [ + unclip ".*" dup surround swap [ + grep-lines + ] [ + [ grep-file ] with each + ] if-empty + ] if-empty ; + +MAIN: run-grep