[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] [BABEL,PATCH] call awk with no input
From: |
Eric Schulte |
Subject: |
Re: [O] [BABEL,PATCH] call awk with no input |
Date: |
Sun, 24 Jul 2011 14:07:53 -0600 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) |
Hi Sergey,
Thanks for another useful patch. This has been applied.
Also, good to see you have ERT'd the testing script. The contribution
of tests along with patches is *greatly* appreciated.
Cheers -- Eric
Litvinov Sergey <address@hidden> writes:
> Please consider this tiny fix to execute awk program with no input.
> Example with gawk:
> gawk --posix 'BEGIN {print 42}'
>
> I also added some tests for ob-awk.
>
> From 868fa910254c48752801cdc7849c3eb4db63f811 Mon Sep 17 00:00:00 2001
> From: Litvinov Sergey <address@hidden>
> Date: Sun, 24 Jul 2011 12:28:35 +0200
> Subject: [PATCH] Awk can be called with no in-file: and no :stdin
>
> ---
> lisp/ob-awk.el | 6 +---
> testing/README.org | 1 +
> testing/examples/ob-awk-test.in | 2 +
> testing/examples/ob-awk-test.org | 39
> ++++++++++++++++++++++++++++++++++++++
> testing/lisp/test-ob-awk.el | 19 ++++++++++++++++++
> 5 files changed, 63 insertions(+), 4 deletions(-)
> create mode 100644 testing/examples/ob-awk-test.in
> create mode 100644 testing/examples/ob-awk-test.org
> create mode 100644 testing/lisp/test-ob-awk.el
>
> diff --git a/lisp/ob-awk.el b/lisp/ob-awk.el
> index d5098bc..cfed04a 100644
> --- a/lisp/ob-awk.el
> +++ b/lisp/ob-awk.el
> @@ -26,8 +26,7 @@
>
> ;;; Commentary:
>
> -;; Babel's awk support relies on two special header argument one of
> -;; which is required to pass data to the awk process.
> +;; Babel's awk can use special header argument:
> ;;
> ;; - :in-file takes a path to a file of data to be processed by awk
> ;;
> @@ -89,11 +88,10 @@ called by `org-babel-execute-src-block'"
> (with-temp-file tmp (insert results))
> (org-babel-import-elisp-from-file tmp)))))
> (cond
> - (in-file (org-babel-eval cmd ""))
> (stdin (with-temp-buffer
> (call-process-shell-command cmd stdin (current-buffer))
> (buffer-string)))
> - (t (error "ob-awk: must specify either :in-file or :stdin"))))
> + (t (org-babel-eval cmd ""))))
> (org-babel-pick-name
> (cdr (assoc :colname-names params)) (cdr (assoc :colnames params)))
> (org-babel-pick-name
> diff --git a/testing/README.org b/testing/README.org
> index 3cc0487..2f16a55 100644
> --- a/testing/README.org
> +++ b/testing/README.org
> @@ -78,6 +78,7 @@ First tangle this file out to your desktop.
> (org-id-update-id-locations
> (list (concat org-dir "/testing/examples/babel.org")
> (concat org-dir "/testing/examples/normal.org")
> + (concat org-dir "/testing/examples/ob-awk-test.org")
> (concat org-dir "/testing/examples/ob-fortran-test.org")
> (concat org-dir "/testing/examples/link-in-heading.org")
> (concat org-dir "/testing/examples/links.org")))
> diff --git a/testing/examples/ob-awk-test.in b/testing/examples/ob-awk-test.in
> new file mode 100644
> index 0000000..c38382d
> --- /dev/null
> +++ b/testing/examples/ob-awk-test.in
> @@ -0,0 +1,2 @@
> + # an input file for awk test
> +15
> \ No newline at end of file
> diff --git a/testing/examples/ob-awk-test.org
> b/testing/examples/ob-awk-test.org
> new file mode 100644
> index 0000000..7f51772
> --- /dev/null
> +++ b/testing/examples/ob-awk-test.org
> @@ -0,0 +1,39 @@
> +#+Title: a collection of examples for ob-awk tests
> +#+OPTIONS: ^:nil
> +
> +* Simple tests
> + :PROPERTIES:
> + :ID: 9e998b2a-3581-43fe-b26d-07d3c507b86a
> + :END:
> +Run without input stream
> +#+begin_src awk :ouput silent :results silent
> + BEGIN {
> + print 42
> + }
> +#+end_src
> +
> +Use a code block ouput as an input
> +#+begin_src awk :stdin genseq :results silent
> + {
> + print 42+$1
> + }
> +#+end_src
> +
> +Use input file
> +#+srcname: genfile
> +#+begin_src awk :in-file ob-awk-test.in :results silent
> + $0~/[\t]*#/{
> + # skip comments
> + next
> + }
> + {
> + print $1*10
> + }
> +#+end_src
> +
> +* Input data generators
> +A code block to generate input stream
> +#+srcname: genseq
> +#+begin_src emacs-lisp :results silent
> +(print "1")
> +#+end_src
> diff --git a/testing/lisp/test-ob-awk.el b/testing/lisp/test-ob-awk.el
> new file mode 100644
> index 0000000..018dec4
> --- /dev/null
> +++ b/testing/lisp/test-ob-awk.el
> @@ -0,0 +1,19 @@
> +(require 'ob-awk)
> +
> +(ert-deftest ob-awk/input-none ()
> + "Test with no input file"
> + (org-test-at-id "9e998b2a-3581-43fe-b26d-07d3c507b86a"
> + (org-babel-next-src-block)
> + (should (= 42 (org-babel-execute-src-block)))))
> +
> +(ert-deftest ob-awk/input-src-block ()
> + "Test a code block as an input"
> + (org-test-at-id "9e998b2a-3581-43fe-b26d-07d3c507b86a"
> + (org-babel-next-src-block 2)
> + (should (= 43 (org-babel-execute-src-block)))))
> +
> +(ert-deftest ob-awk/input-src-block ()
> + "Test a code block as an input"
> + (org-test-at-id "9e998b2a-3581-43fe-b26d-07d3c507b86a"
> + (org-babel-next-src-block 3)
> + (should (= 150 (org-babel-execute-src-block)))))
--
Eric Schulte
http://cs.unm.edu/~eschulte/