123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- (require 'org-macs)
- (org-assert-version)
- (require 'ob)
- (defvar org-babel-sed-command "sed"
- "Name of the sed executable command.")
- (defvar org-babel-tangle-lang-exts)
- (add-to-list 'org-babel-tangle-lang-exts '("sed" . "sed"))
- (defconst org-babel-header-args:sed
- '((:cmd-line . :any)
- (:in-file . :any))
- "Sed specific header arguments.")
- (defvar org-babel-default-header-args:sed '()
- "Default arguments for evaluating a sed source block.")
- (defun org-babel-execute:sed (body params)
- "Execute a block of sed code with Org Babel.
- BODY is the source inside a sed source block and PARAMS is an
- association list over the source block configurations. This
- function is called by `org-babel-execute-src-block'."
- (message "Executing sed source code block")
- (let* ((result-params (cdr (assq :result-params params)))
- (cmd-line (cdr (assq :cmd-line params)))
- (in-file (cdr (assq :in-file params)))
- (code-file (let ((file (org-babel-temp-file "sed-")))
- (with-temp-file file
- (insert body))
- file))
- (stdin (let ((stdin (cdr (assq :stdin params))))
- (when stdin
- (let ((tmp (org-babel-temp-file "sed-stdin-"))
- (res (org-babel-ref-resolve stdin)))
- (with-temp-file tmp
- (insert res))
- tmp))))
- (cmd (mapconcat #'identity
- (remq nil
- (list org-babel-sed-command
- (format "-f \"%s\"" code-file)
- cmd-line
- in-file))
- " ")))
- (org-babel-reassemble-table
- (let ((results
- (cond
- (stdin (with-temp-buffer
- (call-process-shell-command cmd stdin (current-buffer))
- (buffer-string)))
- (t (org-babel-eval cmd "")))))
- (when results
- (org-babel-result-cond result-params
- results
- (let ((tmp (org-babel-temp-file "sed-results-")))
- (with-temp-file tmp (insert results))
- (org-babel-import-elisp-from-file tmp)))))
- (org-babel-pick-name
- (cdr (assq :colname-names params)) (cdr (assq :colnames params)))
- (org-babel-pick-name
- (cdr (assq :rowname-names params)) (cdr (assq :rownames params))))))
- (provide 'ob-sed)
|