Преглед на файлове

ob-plantuml: Allow different @start-/@end clauses

* lisp/ob-plantuml (org-babel-plantuml-make-body) Do not insert
@startuml and @enduml if body already starts with "@start".

PlantUML supports non-UML diagrams that have to be enclosed with
@startgantt/@endgantt for example.  The code for these diagrams can
contain the proper clauses without being enclosed additionally with
@startuml/@enduml.
Henrik Koschitzki преди 5 години
родител
ревизия
4e854974be
променени са 1 файла, в които са добавени 9 реда и са изтрити 6 реда
  1. 9 6
      lisp/ob-plantuml.el

+ 9 - 6
lisp/ob-plantuml.el

@@ -60,16 +60,19 @@ are expected to be scalar variables."
 
 (defun org-babel-plantuml-make-body (body params)
   "Return PlantUML input string.
+
 BODY is the content of the source block and PARAMS is a property list
 of source block parameters.  This function relies on the
 `org-babel-expand-body:generic' function to extract `:var' entries
 from PARAMS and on the `org-babel-variable-assignments:plantuml'
-function to convert variables to PlantUML assignments."
-  (concat
-   "@startuml\n"
-   (org-babel-expand-body:generic
-    body params (org-babel-variable-assignments:plantuml params))
-   "\n@enduml"))
+function to convert variables to PlantUML assignments.
+
+If BODY does not contain @startXXX ... @endXXX clauses, @startuml
+... @enduml will be added."
+  (let ((assignments (org-babel-variable-assignments:plantuml params)))
+    (if (string-prefix-p "@start" body t) assignments
+      (format "@startuml\n%s\n@enduml"
+	      (org-babel-expand-body:generic body params assignments)))))
 
 (defun org-babel-execute:plantuml (body params)
   "Execute a block of plantuml code with org-babel.