>From 2e3b7579649ead40128e3c8e31ca75ced139285d Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Wed, 31 Aug 2011 11:26:29 +0200 Subject: [PATCH 2/2] ob-asymptote: simplify table to array conversion process * lisp/ob-asymptote.el (org-babel-asymptote-var-to-asymptote): refactor code. (org-babel-asymptote-table-to-array): removed function. --- lisp/ob-asymptote.el | 40 ++++++++-------------------------------- 1 files changed, 8 insertions(+), 32 deletions(-) diff --git a/lisp/ob-asymptote.el b/lisp/ob-asymptote.el index f90bb85..2219e03 100644 --- a/lisp/ob-asymptote.el +++ b/lisp/ob-asymptote.el @@ -113,38 +113,14 @@ a variable of the same value." (format "%s[] %S={%s};" type var vect))) ((listp val) (let* ((type (org-babel-asymptote-define-type val)) - (array (org-babel-asymptote-table-to-array - val type - '(:lstart "{" :lend "}," :llend "}")))) - (format "%S[][] %S=%s;" type var array)))))) - -(defun org-babel-asymptote-table-to-array (table type params) - "Convert values of TABLE into a string of an asymptote array. - -TABLE is a list whose atoms are assumed to be of type -TYPE. PARAMS is a plist of parameters that can influence the -conversion. - -Empty cells are ignored." - (labels ((atom-to-string (table) - (cond - ((null table) '()) - ((not (listp (car table))) - (cons (if (or (eq type 'string) - (and (stringp (car table)) - (not (string= (car table) "")))) - (format "\"%s\"" (car table)) - (format "%s" (car table))) - (atom-to-string (cdr table)))) - (t - (cons (atom-to-string (car table)) - (atom-to-string (cdr table)))))) - ;; Remove any empty row - (fix-empty-lines (table) - (delq nil (mapcar (lambda (l) (delq "" l)) table)))) - (orgtbl-to-generic - (fix-empty-lines (atom-to-string table)) - (org-combine-plists '(:hline nil :sep "," :tstart "{" :tend "}") params)))) + (fmt (if (eq 'string type) "\"%s\"" "%s")) + (array (mapconcat (lambda (row) + (concat "{" + (mapconcat (lambda (e) (format fmt e)) + row ", ") + "}")) + val ","))) + (format "%S[][] %S={%s};" type var array)))))) (defun org-babel-asymptote-define-type (data) "Determine type of DATA. -- 1.7.6.1