Function: org-babel-execute:sqlite

org-babel-execute:sqlite is a byte-compiled function defined in ob-sqlite.el.gz.

Signature

(org-babel-execute:sqlite BODY PARAMS)

Documentation

Execute a block of Sqlite code with Babel.

This function is called by org-babel-execute-src-block.

Source Code

;; Defined in /usr/src/emacs/lisp/org/ob-sqlite.el.gz
(defun org-babel-execute:sqlite (body params)
  "Execute a block of Sqlite code with Babel.
This function is called by `org-babel-execute-src-block'."
  (let ((result-params (split-string (or (cdr (assq :results params)) "")))
	(db (cdr (assq :db params)))
	(separator (cdr (assq :separator params)))
	(nullvalue (cdr (assq :nullvalue params)))
	(headers-p (equal "yes" (cdr (assq :colnames params))))
	(others (delq nil (mapcar
			   (lambda (arg) (car (assq arg params)))
			   (list :header :echo :bail :column
				 :csv :html :line :list)))))
    (unless db (error "ob-sqlite: can't evaluate without a database"))
    (with-temp-buffer
      (insert
       (org-babel-eval
	(org-fill-template
	 "%cmd %header %separator %nullvalue %others %csv %db "
	 (list
	  (cons "cmd" org-babel-sqlite3-command)
	  (cons "header" (if headers-p "-header" "-noheader"))
	  (cons "separator"
		(if separator (format "-separator %s" separator) ""))
	  (cons "nullvalue"
		(if nullvalue (format "-nullvalue %s" nullvalue) ""))
	  (cons "others"
		(mapconcat
		 (lambda (arg) (format "-%s" (substring (symbol-name arg) 1)))
		 others " "))
	  ;; for easy table parsing, default header type should be -csv
	  (cons "csv" (if (or (member :csv others) (member :column others)
			      (member :line others) (member :list others)
			      (member :html others) separator)
			  ""
			"-csv"))
	  (cons "db " db)))
	;; body of the code block
	(org-babel-expand-body:sqlite body params)))
      (org-babel-result-cond result-params
	(buffer-string)
	(if (equal (point-min) (point-max))
	    ""
	  (org-table-convert-region (point-min) (point-max)
				    (if (or (member :csv others)
					    (member :column others)
					    (member :line others)
					    (member :list others)
					    (member :html others) separator)
					nil
				      '(4)))
	  (org-babel-sqlite-table-or-scalar
	   (org-babel-sqlite-offset-colnames
	    (org-table-to-lisp) headers-p)))))))