From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Schulte Subject: Re: [BUG] hline handling in ob-ruby Date: Sat, 31 Aug 2013 10:48:08 -0600 Message-ID: <8761ulx0vr.fsf@gmail.com> References: <98abb28fca59593d7517e1ecf106fe17@mail.rickster.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:48658) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VFoL8-00062v-To for emacs-orgmode@gnu.org; Sat, 31 Aug 2013 12:48:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VFoL4-0004Dr-Lp for emacs-orgmode@gnu.org; Sat, 31 Aug 2013 12:47:58 -0400 Received: from mail-pb0-x22b.google.com ([2607:f8b0:400e:c01::22b]:36580) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VFoL4-0004Dj-EF for emacs-orgmode@gnu.org; Sat, 31 Aug 2013 12:47:54 -0400 Received: by mail-pb0-f43.google.com with SMTP id md4so3081274pbc.2 for ; Sat, 31 Aug 2013 09:47:53 -0700 (PDT) In-Reply-To: <98abb28fca59593d7517e1ecf106fe17@mail.rickster.com> (Rick Frankel's message of "Tue, 27 Aug 2013 10:42:59 -0400") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Rick Frankel Cc: emacs-orgmode , eric.schulte@gmx.com Sorry about the delay in replying, apparently gmail has decided to redirect large chunks of the Org-mode mailing list into my spam folder. Perhaps it would be better to not use my @gmx account in the future. Please do go ahead and apply this patch. Thanks for porting this solution over from ob-python, and sorry again about the delay! Rick Frankel writes: > Eric- > > There is a bug in ob-ruby --- if an literal 'hline is passed into > (e.g., :hline no) a ruby block, the execution fails due to an > incorrect datatype (this is not an issue in any other language). The > patch provided in > http://lists.gnu.org/archive/html/emacs-orgmode/2013-08/msg00316.html > (and reattached here), applies the solution used in ox-python to > handle the issue. An alternative solution is ok too :). > > I would be glad to apply the patch myself, but since you are the owner > of the file i would appreciate you ok before proceeding. > > tia, > rick > > 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. -- Eric Schulte https://cs.unm.edu/~eschulte PGP: 0x614CA05D