Add a matrix input to ob-fortran.el

* lisp/ob-fortran.el: add a branch which handles nested lists
* testing/examples/ob-fortran-test.org: add a test for matrix input
* testing/lisp/test-ob-fortran.el: add a test for matrix input
This commit is contained in:
Litvinov Sergey 2013-06-01 19:20:06 +02:00 committed by Eric Schulte
parent e3cc1ca792
commit d7e884d86c
3 changed files with 40 additions and 0 deletions

View File

@ -143,6 +143,12 @@ of the same value."
((stringp val)
(format "character(len=%d), parameter :: %S = '%s'\n"
(length val) var val))
;; val is a matrix
((and (listp val) (listp (car val)))
(format "real, parameter :: %S(%d,%d) = transpose( reshape( %s , (/ %d, %d /) ) )\n"
var (length val) (length (car val))
(org-babel-fortran-transform-list val)
(length (car val)) (length val)))
((listp val)
(format "real, parameter :: %S(%d) = %s\n"
var (length val) (org-babel-fortran-transform-list val)))

View File

@ -50,6 +50,28 @@ write (*, '(3f5.2)'), s
write (*, '(2f5.2)'), s
#+end_src
* matrix
:PROPERTIES:
:ID: 3f73ab19-d25a-428d-8c26-e8c6aa933976
:END:
Real matrix as input
#+name: fortran-input-matrix1
| 0.0 | 42.0 |
| 0.0 | 0.0 |
| 0.0 | 0.0 |
#+name: fortran-input-matrix2
| 0.0 | 0.0 | 0.0 |
| 0.0 | 0.0 | 42.0 |
#+begin_src fortran :var s=fortran-input-matrix1 :results silent
write (*, '(i2)'), nint(s(1,2))
#+end_src
#+begin_src fortran :var s=fortran-input-matrix2 :results silent
write (*, '(i2)'), nint(s(2,3))
#+end_src
* failing
:PROPERTIES:
:ID: 891ead4a-f87a-473c-9ae0-1cf348bcd04f

View File

@ -68,6 +68,18 @@
(org-babel-next-src-block 2)
(should (equal "1.00 2.00" (org-babel-execute-src-block)))))
(ert-deftest ob-fortran/list-matrix-from-table1 ()
"Test real matrix from a table"
(org-test-at-id "3f73ab19-d25a-428d-8c26-e8c6aa933976"
(org-babel-next-src-block 1)
(should (= 42 (org-babel-execute-src-block)))))
(ert-deftest ob-fortran/list-matrix-from-table2 ()
"Test real matrix from a table"
(org-test-at-id "3f73ab19-d25a-428d-8c26-e8c6aa933976"
(org-babel-next-src-block 2)
(should (= 42 (org-babel-execute-src-block)))))
(ert-deftest ob-fortran/no-variables-with-main ()
"Test :var with explicit 'program'"
(org-test-at-id "891ead4a-f87a-473c-9ae0-1cf348bcd04f"