浏览代码

babel: ob-sqlite now handles column names

* lisp/babel/langs/ob-sqlite.el (org-babel-execute:sqlite):
  now handling column names

  (org-babel-sqlite-offset-colnames): now handling column names
Eric Schulte 15 年之前
父节点
当前提交
5769cccd6a
共有 1 个文件被更改,包括 13 次插入3 次删除
  1. 13 3
      lisp/babel/langs/ob-sqlite.el

+ 13 - 3
lisp/babel/langs/ob-sqlite.el

@@ -45,19 +45,23 @@
 called by `org-babel-execute-src-block'."
 called by `org-babel-execute-src-block'."
   (message "executing Sqlite source code block")
   (message "executing Sqlite source code block")
   (let ((result-params (split-string (or (cdr (assoc :results params)) "")))
   (let ((result-params (split-string (or (cdr (assoc :results params)) "")))
-	(vars (org-babel-ref-variables params)))
+	(vars (org-babel-ref-variables params))
+	(headers-p (equal "yes" (cdr (assoc :colnames params)))))
     (with-temp-buffer
     (with-temp-buffer
       (insert
       (insert
        (shell-command-to-string
        (shell-command-to-string
-	(format "%s -csv %s %S"
+	(format "%s %s -csv %s %S"
 		org-babel-sqlite3-command
 		org-babel-sqlite3-command
+		(if headers-p "-header" "")
 		(cdr (assoc :db params))
 		(cdr (assoc :db params))
 		(org-babel-sqlite-expand-vars body vars))))
 		(org-babel-sqlite-expand-vars body vars))))
       (if (or (member "scalar" result-params)
       (if (or (member "scalar" result-params)
 	      (member "code" result-params))
 	      (member "code" result-params))
 	  (buffer-string)
 	  (buffer-string)
 	(org-table-convert-region (point-min) (point-max))
 	(org-table-convert-region (point-min) (point-max))
-	(org-babel-sqlite-table-or-scalar (org-table-to-lisp))))))
+	(org-babel-sqlite-table-or-scalar
+	 (org-babel-sqlite-offset-colnames
+	  (org-table-to-lisp) headers-p))))))
 
 
 (defun org-babel-sqlite-expand-vars (body vars)
 (defun org-babel-sqlite-expand-vars (body vars)
   "Expand the variables held in VARS in BODY."
   "Expand the variables held in VARS in BODY."
@@ -77,6 +81,12 @@ called by `org-babel-execute-src-block'."
       (caar result)
       (caar result)
     result))
     result))
 
 
+(defun org-babel-sqlite-offset-colnames (table headers-p)
+  "If HEADERS-P is non-nil then offset the first row as column names."
+  (if headers-p
+      (cons (car table) (cons 'hline (cdr table)))
+    table))
+
 (defun org-babel-prep-session:sqlite (session params)
 (defun org-babel-prep-session:sqlite (session params)
   "Prepare SESSION according to the header arguments specified in PARAMS."
   "Prepare SESSION according to the header arguments specified in PARAMS."
   (error "sqlite sessions not yet implemented"))
   (error "sqlite sessions not yet implemented"))