瀏覽代碼

fixed error parsing empty results from ruby

Eric Schulte 16 年之前
父節點
當前提交
0b75d89ccf
共有 2 個文件被更改,包括 46 次插入50 次删除
  1. 1 2
      lisp/langs/org-babel-ruby.el
  2. 45 48
      org-babel.org

+ 1 - 2
lisp/langs/org-babel-ruby.el

@@ -70,9 +70,8 @@ specifying a var of the same value."
 (defun org-babel-ruby-table-or-results (results)
   "If the results look like a table, then convert them into an
 Emacs-lisp table, otherwise return the results as a string."
-  (message "results are %s" results)
   (org-babel-read
-   (if (string-match "^\\[.+\\]$" results)
+   (if (and (stringp results) (string-match "^\\[.+\\]$" results))
        (org-babel-read
         (replace-regexp-in-string
          "\\[" "(" (replace-regexp-in-string

+ 45 - 48
org-babel.org

@@ -1943,13 +1943,10 @@ as.matrix(tab[2,])
 As an example eval the following.  Adding a line to test
 
 #+srcname: simple-ruby-array
-#+begin_src ruby
+#+begin_src ruby :results silent
 [3, 4, 5]
 #+end_src
 
-#+resname: simple-ruby-array
-| 3 | 4 | 5 |
-
 #+srcname: ruby-array-test
 #+begin_src ruby :var ar = simple-ruby-array :results silent
 ar.first
@@ -2013,50 +2010,50 @@ org-babel functionality.
 of these tests may fail.
 
 #+TBLNAME: org-babel-tests
-| functionality           | block                      | arg |    expected |     results | pass                          |
-|-------------------------+----------------------------+-----+-------------+-------------+-------------------------------|
-| basic evaluation        |                            |     |             |             | pass                          |
-|-------------------------+----------------------------+-----+-------------+-------------+-------------------------------|
-| emacs lisp              | basic-elisp                |     |           5 |           5 | pass                          |
-| shell                   | basic-shell                |     |           6 |           6 | pass                          |
-| ruby                    | basic-ruby                 |     |   org-babel |   org-babel | pass                          |
-| python                  | basic-python               |     | hello world | hello world | pass                          |
-| R                       | basic-R                    |     |          13 |          13 | pass                          |
-|-------------------------+----------------------------+-----+-------------+-------------+-------------------------------|
-| tables                  |                            |     |             |             | pass                          |
-|-------------------------+----------------------------+-----+-------------+-------------+-------------------------------|
-| emacs lisp              | table-elisp                |     |           3 |           3 | pass                          |
-| ruby                    | table-ruby                 |     |       1-2-3 |       1-2-3 | pass                          |
-| python                  | table-python               |     |           5 |           5 | pass                          |
-| R                       | table-R                    |     |         3.5 |         3.5 | pass                          |
-|-------------------------+----------------------------+-----+-------------+-------------+-------------------------------|
-| source block references |                            |     |             |             | pass                          |
-|-------------------------+----------------------------+-----+-------------+-------------+-------------------------------|
-| all languages           | chained-ref-last           |     |       Array |       Array | pass                          |
-|-------------------------+----------------------------+-----+-------------+-------------+-------------------------------|
-| source block functions  |                            |     |             |             | pass                          |
-|-------------------------+----------------------------+-----+-------------+-------------+-------------------------------|
-| emacs lisp              | defun-fibb                 |     |       fibbd |       fibbd | pass                          |
-| run over                | Fibonacci                  |   0 |           1 |           1 | pass                          |
-| a                       | Fibonacci                  |   1 |           1 |           1 | pass                          |
-| variety                 | Fibonacci                  |   2 |           2 |           2 | pass                          |
-| of                      | Fibonacci                  |   3 |           3 |           3 | pass                          |
-| different               | Fibonacci                  |   4 |           5 |           5 | pass                          |
-| arguments               | Fibonacci                  |   5 |           8 |           8 | pass                          |
-|-------------------------+----------------------------+-----+-------------+-------------+-------------------------------|
-| bugs and tasks          |                            |     |             |             | pass                          |
-|-------------------------+----------------------------+-----+-------------+-------------+-------------------------------|
-| simple ruby arrays      | ruby-array-test            |     |           3 |      #ERROR | expected "3" but was "#ERROR" |
-| R number evaluation     | bug-R-number-evaluation    |     |           2 |           2 | pass                          |
-| multi-line ruby blocks  | multi-line-ruby-test       |     |           2 |           2 | pass                          |
-| forcing vector results  | test-forced-vector-results |     |       Array |       Array | pass                          |
-|-------------------------+----------------------------+-----+-------------+-------------+-------------------------------|
-| sessions                |                            |     |             |             | pass                          |
-|-------------------------+----------------------------+-----+-------------+-------------+-------------------------------|
-| set ruby session        | set-ruby-session-var       |     |        :set |        :set | pass                          |
-| get from ruby session   | get-ruby-session-var       |     |           3 |           3 | pass                          |
-| set python session      | set-python-session-var     |     |         set |         set | pass                          |
-| get from python session | get-python-session-var     |     |           4 |           4 | pass                          |
+| functionality           | block                      | arg |    expected |     results | pass                             |
+|-------------------------+----------------------------+-----+-------------+-------------+----------------------------------|
+| basic evaluation        |                            |     |             |             | pass                             |
+|-------------------------+----------------------------+-----+-------------+-------------+----------------------------------|
+| emacs lisp              | basic-elisp                |     |           5 |           5 | pass                             |
+| shell                   | basic-shell                |     |           6 |           6 | pass                             |
+| ruby                    | basic-ruby                 |     |   org-babel |   org-babel | pass                             |
+| python                  | basic-python               |     | hello world | hello world | pass                             |
+| R                       | basic-R                    |     |          13 |          13 | pass                             |
+|-------------------------+----------------------------+-----+-------------+-------------+----------------------------------|
+| tables                  |                            |     |             |             | pass                             |
+|-------------------------+----------------------------+-----+-------------+-------------+----------------------------------|
+| emacs lisp              | table-elisp                |     |           3 |           3 | pass                             |
+| ruby                    | table-ruby                 |     |       1-2-3 |       1-2-3 | pass                             |
+| python                  | table-python               |     |           5 |           5 | pass                             |
+| R                       | table-R                    |     |         3.5 |         3.5 | pass                             |
+|-------------------------+----------------------------+-----+-------------+-------------+----------------------------------|
+| source block references |                            |     |             |             | pass                             |
+|-------------------------+----------------------------+-----+-------------+-------------+----------------------------------|
+| all languages           | chained-ref-last           |     |       Array |       Array | pass                             |
+|-------------------------+----------------------------+-----+-------------+-------------+----------------------------------|
+| source block functions  |                            |     |             |             | pass                             |
+|-------------------------+----------------------------+-----+-------------+-------------+----------------------------------|
+| emacs lisp              | defun-fibb                 |     |       fibbd |       fibbd | pass                             |
+| run over                | Fibonacci                  |   0 |           1 |           1 | pass                             |
+| a                       | Fibonacci                  |   1 |           1 |           1 | pass                             |
+| variety                 | Fibonacci                  |   2 |           2 |           2 | pass                             |
+| of                      | Fibonacci                  |   3 |           3 |           3 | pass                             |
+| different               | Fibonacci                  |   4 |           5 |           5 | pass                             |
+| arguments               | Fibonacci                  |   5 |           8 |           8 | pass                             |
+|-------------------------+----------------------------+-----+-------------+-------------+----------------------------------|
+| bugs and tasks          |                            |     |             |             | pass                             |
+|-------------------------+----------------------------+-----+-------------+-------------+----------------------------------|
+| simple ruby arrays      | ruby-array-test            |     |           3 |           3 | pass                             |
+| R number evaluation     | bug-R-number-evaluation    |     |           2 |           2 | pass                             |
+| multi-line ruby blocks  | multi-line-ruby-test       |     |           2 |           2 | pass                             |
+| forcing vector results  | test-forced-vector-results |     |       Array |       Array | pass                             |
+|-------------------------+----------------------------+-----+-------------+-------------+----------------------------------|
+| sessions                |                            |     |             |             | pass                             |
+|-------------------------+----------------------------+-----+-------------+-------------+----------------------------------|
+| set ruby session        | set-ruby-session-var       |     |        :set |      #ERROR | expected ":set" but was "#ERROR" |
+| get from ruby session   | get-ruby-session-var       |     |           3 |         nil | expected "3" but was "nil"       |
+| set python session      | set-python-session-var     |     |         set |         set | pass                             |
+| get from python session | get-python-session-var     |     |           4 |           4 | pass                             |
 #+TBLFM: $5='(if (= (length $3) 1) (progn (message (format "running %S" '(sbe $2 (n $3)))) (sbe $2 (n $3))) (sbe $2))::$6='(if (string= $4 $5) "pass" (format "expected %S but was %S" $4 $5))
 
 ** basic tests