Browse Source

DONE Remove protective commas from # comments before evaluating

Eric Schulte 16 years ago
parent
commit
c38294d21f
2 changed files with 32 additions and 21 deletions
  1. 6 2
      lisp/org-babel.el
  2. 26 19
      org-babel.org

+ 6 - 2
lisp/org-babel.el

@@ -174,13 +174,13 @@ of the following form.  (language body header-arguments-alist)"
 
 
 (defun org-babel-parse-src-block-match ()
 (defun org-babel-parse-src-block-match ()
   (list (org-babel-clean-text-properties (match-string 1))
   (list (org-babel-clean-text-properties (match-string 1))
-        (org-babel-clean-text-properties (match-string 4))
+        (org-babel-strip-protective-comas (org-babel-clean-text-properties (match-string 4)))
         (org-combine-plists org-babel-default-header-args
         (org-combine-plists org-babel-default-header-args
                             (org-babel-parse-header-arguments (org-babel-clean-text-properties (or (match-string 3) ""))))))
                             (org-babel-parse-header-arguments (org-babel-clean-text-properties (or (match-string 3) ""))))))
 
 
 (defun org-babel-parse-inline-src-block-match ()
 (defun org-babel-parse-inline-src-block-match ()
   (list (org-babel-clean-text-properties (match-string 1))
   (list (org-babel-clean-text-properties (match-string 1))
-        (org-babel-clean-text-properties (match-string 4))
+        (org-babel-strip-protective-comas (org-babel-clean-text-properties (match-string 4)))
         (org-combine-plists org-babel-default-inline-header-args
         (org-combine-plists org-babel-default-inline-header-args
                             (org-babel-parse-header-arguments (org-babel-clean-text-properties (or (match-string 3) ""))))))
                             (org-babel-parse-header-arguments (org-babel-clean-text-properties (or (match-string 3) ""))))))
 
 
@@ -334,6 +334,10 @@ non-nil."
   "Strip all properties from text return."
   "Strip all properties from text return."
   (set-text-properties 0 (length text) nil text) text)
   (set-text-properties 0 (length text) nil text) text)
 
 
+(defun org-babel-strip-protective-comas (body)
+  "Strip protective comas from bodies of source blocks."
+  (replace-regexp-in-string "^,#" "#" body))
+
 (defun org-babel-read (cell)
 (defun org-babel-read (cell)
   "Convert the string value of CELL to a number if appropriate.
   "Convert the string value of CELL to a number if appropriate.
 Otherwise if cell looks like a list (meaning it starts with a
 Otherwise if cell looks like a list (meaning it starts with a

+ 26 - 19
org-babel.org

@@ -114,7 +114,7 @@ table, allowing the test suite to be run be evaluation of the table
 and the results to be collected in the same table.
 and the results to be collected in the same table.
 
 
 
 
-* Tasks [21/35]
+* Tasks [22/35]
 ** TODO Create objects in top level (global) environment in R?
 ** TODO Create objects in top level (global) environment in R?
 *** initial requirement statement [DED]
 *** initial requirement statement [DED]
    At the moment, objects created by computations performed in the
    At the moment, objects created by computations performed in the
@@ -386,10 +386,6 @@ tabel
 
 
 Another example is in the [[*operations%20in%20on%20tables][grades example]].
 Another example is in the [[*operations%20in%20on%20tables][grades example]].
 
 
-** TODO Remove protective commas from # comments before evaluating
-   org inserts protective commas in front of ## comments in language
-   modes that use them. We need to remove them prior to sending code
-   to the interpreter.
 ** PROPOSED conversion between org-babel and noweb (e.g. .Rnw) format
 ** PROPOSED conversion between org-babel and noweb (e.g. .Rnw) format
    I haven't thought about this properly. Just noting it down. What
    I haven't thought about this properly. Just noting it down. What
    Sweave uses is called "R noweb" (.Rnw).
    Sweave uses is called "R noweb" (.Rnw).
@@ -444,20 +440,6 @@ one that comes to mind is the ability to treat a source-code block
 like a function which accepts arguments and returns results. Actually
 like a function which accepts arguments and returns results. Actually
 this can be it's own TODO (see [[* source blocks as functions][source blocks as functions]]).
 this can be it's own TODO (see [[* source blocks as functions][source blocks as functions]]).
 
 
-** DONE pass multiple reference arguments into R
-   Can we do this? I wasn't sure how to supply multiple 'var' header
-   args. Just delete this if I'm being dense.
-
-   This should be working, see the following example...
-
-#+srcname: two-arg-example
-#+begin_src R :var n=2 :var m=8
-n + m
-#+end_src
-
-#+resname: two-arg-example
-: 10
-
 ** DEFERRED use textConnection to pass tsv to R?
 ** DEFERRED use textConnection to pass tsv to R?
    When passing args from the org buffer to R, the following route is
    When passing args from the org buffer to R, the following route is
    used: arg in buffer -> elisp -> tsv on file -> data frame in R. I
    used: arg in buffer -> elisp -> tsv on file -> data frame in R. I
@@ -610,6 +592,31 @@ to the command if BUFF is not given.)
     posterity. Same for a shell session either in a *shell* buffer, or
     posterity. Same for a shell session either in a *shell* buffer, or
     pasted from another terminal emulator. And python of course.
     pasted from another terminal emulator. And python of course.
 
 
+** DONE Remove protective commas from # comments before evaluating
+   org inserts protective commas in front of ## comments in language
+   modes that use them. We need to remove them prior to sending code
+   to the interpreter.
+
+#+srcname: testing-removal-of-protective-comas
+#+begin_src ruby
+,# this one might break it??
+:comma_protection
+#+end_src
+
+** DONE pass multiple reference arguments into R
+   Can we do this? I wasn't sure how to supply multiple 'var' header
+   args. Just delete this if I'm being dense.
+
+   This should be working, see the following example...
+
+#+srcname: two-arg-example
+#+begin_src R :var n=2 :var m=8
+n + m
+#+end_src
+
+#+resname: two-arg-example
+: 10
+
 ** DONE ensure that table ranges work
 ** DONE ensure that table ranges work
 when a table range is passed to org-babel as an argument, it should be
 when a table range is passed to org-babel as an argument, it should be
 interpreted as a vector.
 interpreted as a vector.