From 4ae86a04680bcf671d43bb0b70bfddd083b743b2 Mon Sep 17 00:00:00 2001 From: Rick Frankel Date: Thu, 15 Aug 2013 14:43:51 -0400 Subject: [PATCH] Handle literal 'hline arguments passed to ruby. Solution shamelessly copied from ob-python. * lisp/ob-ruby.el: New customizations `org-babel-ruby-hline-to' and `org-babel-ruby-nil-to' (org-babel-ruby-var-to-ruby): Convert incoming 'hlines. (org-babel-ruby-table-or-string): Convert outgoing nils. --- lisp/ob-ruby.el | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/lisp/ob-ruby.el b/lisp/ob-ruby.el index 20fb418..d15d288 100644 --- a/lisp/ob-ruby.el +++ b/lisp/ob-ruby.el @@ -50,6 +50,20 @@ (defvar org-babel-ruby-command "ruby" "Name of command to use for executing ruby code.") +(defcustom org-babel-ruby-hline-to "nil" + "Replace hlines in incoming tables with this when translating to ruby." + :group 'org-babel + :version "24.4" + :package-version '(Org . "8.0") + :type 'string) + +(defcustom org-babel-ruby-nil-to 'hline + "Replace 'nil' in ruby tables with this before returning." + :group 'org-babel + :version "24.4" + :package-version '(Org . "8.0") + :type 'string) + (defun org-babel-execute:ruby (body params) "Execute a block of Ruby code with Babel. This function is called by `org-babel-execute-src-block'." @@ -115,13 +129,21 @@ Convert an elisp value into a string of ruby source code specifying a variable of the same value." (if (listp var) (concat "[" (mapconcat #'org-babel-ruby-var-to-ruby var ", ") "]") - (format "%S" var))) + (if (equal var 'hline) + org-babel-ruby-hline-to + (format "%S" var)))) (defun org-babel-ruby-table-or-string (results) "Convert RESULTS into an appropriate elisp value. If RESULTS look like a table, then convert them into an Emacs-lisp table, otherwise return the results as a string." - (org-babel-script-escape results)) + ((lambda (res) + (if (listp res) + (mapcar (lambda (el) (if (equal el 'nil) + org-babel-ruby-nil-to el)) + res) + res)) + (org-babel-script-escape results))) (defun org-babel-ruby-initiate-session (&optional session params) "Initiate a ruby session. -- 1.8.0