forked from mirrors/org-mode
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:
parent
cd1fcb6837
commit
539b89451c
|
@ -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)))))
|
||||
|
|
Loading…
Reference in a new issue