ttn pushed a commit to branch master in repository elpa. commit 5a907b7ee6fe4f201254aceb2d3f4c15eba712ee Author: Thien-Thi Nguyen <t...@gnu.org> Date: Fri Mar 14 08:11:15 2014 +0100
[gnugo sgf int] Add abstractions: >>prop, >>node, >>tree * packages/gnugo/gnugo.el (gnugo/sgf-write-file): ...here, as internal funcs via ‘cl-labels’. --- packages/gnugo/gnugo.el | 57 +++++++++++++++++++++++++++------------------- 1 files changed, 33 insertions(+), 24 deletions(-) diff --git a/packages/gnugo/gnugo.el b/packages/gnugo/gnugo.el index 7b8b829..af71c59 100644 --- a/packages/gnugo/gnugo.el +++ b/packages/gnugo/gnugo.el @@ -2191,32 +2191,41 @@ starting a new one. See `gnugo-board-mode' documentation for more info." ((< 60 (current-column)) (save-excursion (goto-char p) - (insert "\n")))))) + (insert "\n"))))) + (>>prop (prop) + (setq p (point) + name (car prop) + v (cdr prop)) + (insert (substring (symbol-name name) 1)) + (cond ((not v)) + ((and (consp v) + (setq spec (cdr (assq name specs))) + (memq (car spec) + '(list elist))) + (>>nl) + (let ((>> (if (consp (cadr spec)) + #'>>two + #'>>one))) + (dolist (little-v v) + (setq p (point)) + (funcall >> little-v) + (>>nl)))) + ((consp v) + (>>two v) (>>nl)) + (t + (>>one v) (>>nl)))) + (>>node (node) + (loop initially (insert ";") + for prop in node + do (>>prop prop))) + (>>tree (tree) + (insert "(") + (dolist (node tree) + (>>node node)) + (insert ")\n"))) (with-temp-buffer (dolist (tree collection) - (insert "(") - (dolist (node tree) - (insert ";") - (dolist (prop node) - (setq p (point) - name (car prop) - v (cdr prop)) - (insert (substring (symbol-name name) 1)) - (cond ((not v)) - ((and (consp v) - (memq (car (setq spec (cdr (assq name specs)))) - '(list elist))) - (>>nl) - (let ((>> (if (consp (cadr spec)) - #'>>two - #'>>one))) - (dolist (little-v v) - (setq p (point)) (funcall >> little-v) (>>nl)))) - ((consp v) - (>>two v) (>>nl)) - (t - (>>one v) (>>nl))))) - (insert ")\n")) + (>>tree tree)) (write-file filename))))) ;;; gnugo.el ends here