ob-sh: add :hlines processing and :hline-string header arg

* lisp/ob-sh.el (org-babel-variable-assignments:sh): Check for
  ":hlines yes" and use header arg :hlines-string if
  defined (default to "hline") and add this to the call of
  `org-babel-sh-var-to-sh'.
  (org-babel-sh-var-to-sh, org-babel-sh-var-to-string): Add additional
  optional string argument `hline' and use it for the :hline parameter
  in the call to `orgtbl-to-generic'.
This commit is contained in:
Achim Gratz 2013-05-19 06:55:38 +02:00
parent cd1fcb6837
commit 539b89451c

View file

@ -108,26 +108,30 @@ This function is called by `org-babel-execute-src-block'."
(defun org-babel-variable-assignments:sh (params)
"Return list of shell statements assigning the block's variables."
(let ((sep (cdr (assoc :separator params))))
(let ((sep (cdr (assoc :separator params)))
(hline (when (string= "yes" (cdr (assoc :hlines params)))
(or (cdr (assoc :hline-string params))
"hline"))))
(mapcar
(lambda (pair)
(format "%s=%s"
(car pair)
(org-babel-sh-var-to-sh (cdr pair) sep)))
(org-babel-sh-var-to-sh (cdr pair) sep hline)))
(mapcar #'cdr (org-babel-get-header params :var)))))
(defun org-babel-sh-var-to-sh (var &optional sep)
(defun org-babel-sh-var-to-sh (var &optional sep hline)
"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."
(format org-babel-sh-var-quote-fmt (org-babel-sh-var-to-string var sep)))
(format org-babel-sh-var-quote-fmt (org-babel-sh-var-to-string var sep hline)))
(defun org-babel-sh-var-to-string (var &optional sep)
(defun org-babel-sh-var-to-string (var &optional sep hline)
"Convert an elisp value to a string."
(let ((echo-var (lambda (v) (if (stringp v) v (format "%S" v)))))
(cond
((and (listp var) (or (listp (car var)) (equal (car var) 'hline)))
(orgtbl-to-generic var (list :sep (or sep "\t") :fmt echo-var)))
(orgtbl-to-generic var (list :sep (or sep "\t") :fmt echo-var
:hline hline)))
((listp var)
(mapconcat echo-var var "\n"))
(t (funcall echo-var var)))))