Browse Source

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 years ago
parent
commit
5769cccd6a
1 changed files with 13 additions and 3 deletions
  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"))