Function: org-babel-expand-body:csharp

org-babel-expand-body:csharp is a byte-compiled function defined in ob-csharp.el.gz.

Signature

(org-babel-expand-body:csharp BODY PARAMS)

Documentation

Expand a block of C# code in BODY according to PARAMS.

See org-babel-default-header-args:csharp for available parameters.

Source Code

;; Defined in /usr/src/emacs/lisp/org/ob-csharp.el.gz
(defun org-babel-expand-body:csharp (body params)
  "Expand a block of C# code in BODY according to PARAMS.

See `org-babel-default-header-args:csharp' for available parameters."
  (let* ((main-p (not (string= (cdr (assq :main params)) "no")))
         (class (pcase (alist-get :class params)
                  ("no" nil)
                  (`nil "Program")
                  (_ (alist-get :class params))))
         (namespace "org.babel.autogen")
         (usings (alist-get :usings params)))
    (with-temp-buffer
      (when (alist-get :prologue params)
        (insert (alist-get :prologue params) "\n"))
      (insert "namespace " namespace ";\n")
      (when usings
        (insert (format "\n%s\n" (org-babel-csharp--format-usings usings))))
      (when class
        (insert "\nclass " class "\n{\n"))
      (when main-p
        (insert "static void Main(string[] args)\n{\n"))
      (insert (if (alist-get :var params)
                  (mapconcat #'identity (org-babel-variable-assignments:csharp params) "\n")
                "")
              "\n")
      (insert body)
      (when main-p
        (insert "\n}"))
      (when class
        (insert "\n}"))
      (when (alist-get :epilogue params)
        (insert "\n" (alist-get :epilogue params)))
      (buffer-string))))