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)
|
(defun org-babel-variable-assignments:sh (params)
|
||||||
"Return list of shell statements assigning the block's variables."
|
"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
|
(mapcar
|
||||||
(lambda (pair)
|
(lambda (pair)
|
||||||
(format "%s=%s"
|
(format "%s=%s"
|
||||||
(car pair)
|
(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)))))
|
(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 value to a shell variable.
|
||||||
Convert an elisp var into a string of shell commands specifying a
|
Convert an elisp var into a string of shell commands specifying a
|
||||||
var of the same value."
|
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."
|
"Convert an elisp value to a string."
|
||||||
(let ((echo-var (lambda (v) (if (stringp v) v (format "%S" v)))))
|
(let ((echo-var (lambda (v) (if (stringp v) v (format "%S" v)))))
|
||||||
(cond
|
(cond
|
||||||
((and (listp var) (or (listp (car var)) (equal (car var) 'hline)))
|
((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)
|
((listp var)
|
||||||
(mapconcat echo-var var "\n"))
|
(mapconcat echo-var var "\n"))
|
||||||
(t (funcall echo-var var)))))
|
(t (funcall echo-var var)))))
|
||||||
|
|
Loading…
Reference in a new issue