Explorar o código

ob-sh: fixed insertion of table data into shell variables

* lisp/ob-sh.el (org-babel-sh-var-to-sh): Fixed insertion of tabular
  data into shell variables.
Eric Schulte %!s(int64=14) %!d(string=hai) anos
pai
achega
f702991626
Modificáronse 1 ficheiros con 9 adicións e 15 borrados
  1. 9 15
      lisp/ob-sh.el

+ 9 - 15
lisp/ob-sh.el

@@ -56,7 +56,7 @@ This will be passed to  `shell-command-on-region'")
 This function is called by `org-babel-execute-src-block'."
   (let* ((session (org-babel-sh-initiate-session
 		   (cdr (assoc :session params))))
-         (result-params (cdr (assoc :result-params params))) 
+         (result-params (cdr (assoc :result-params params)))
          (full-body (org-babel-expand-body:generic
 		     body params (org-babel-variable-assignments:sh params))))
     (org-babel-reassemble-table
@@ -101,20 +101,14 @@ This function is called by `org-babel-execute-src-block'."
   "Convert an elisp value to a shell variable.
 Convert an elisp var into a string of shell commands specifying a
 var of the same value."
-  (if (listp var)
-      (flet ((deep-string (el)
-                          (if (listp el)
-                              (mapcar #'deep-string el)
-			    (org-babel-sh-var-to-sh el sep))))
-	(format org-babel-sh-var-quote-fmt
-		(orgtbl-to-generic
-		 (deep-string (if (listp (car var)) var (list var)))
-		 (list :sep (or sep "\t")))))
-    (if (stringp var)
-	(if (string-match "[ \t\n\r]" var)
-	    (format org-babel-sh-var-quote-fmt var)
-	  (format "%s" var))
-      (format "%S" var))))
+  (flet ((echo-var (v) (if (stringp v) v (format "%S" v))))
+    ((lambda (var) (format org-babel-sh-var-quote-fmt var))
+     (cond
+      ((and (listp var) (listp (car var)))
+       (orgtbl-to-generic var  (list :sep (or sep "\t") :fmt #'echo-var)))
+      ((listp var)
+       (mapconcat #'echo-var var "\n"))
+      (t (echo-var var))))))
 
 (defun org-babel-sh-table-or-results (results)
   "Convert RESULTS to an appropriate elisp value.