eschulte pushed a commit to branch go
in repository elpa.
commit 5cb84444831cf1c4b323cf4c8ed8af48b1a02989
Author: Eric Schulte <[email protected]>
Date: Tue May 15 07:25:19 2012 -0400
passing all tests
---
sgf.el | 13 ++++++++++---
1 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/sgf.el b/sgf.el
index d9e42ba..39683e9 100644
--- a/sgf.el
+++ b/sgf.el
@@ -61,15 +61,18 @@
(nreverse res))))
(def-edebug-spec parse-many (regexp string body))
-(defvar prop-val-re
+(defvar parse-prop-val-re
"\\[\\(.*?[^\\]\\)\\]")
(defvar parse-prop-re
- (format "[[:space:]]*\\([[:alpha:]]+\\(%s\\)+\\)" prop-val-re))
+ (format "[[:space:]]*\\([[:alpha:]]+\\(%s\\)+\\)" parse-prop-val-re))
(defvar parse-node-re
(format "[[:space:]]*;\\(%s\\)+" parse-prop-re))
+(defvar parse-tree-part-re
+ (format "[[:space:]]*(\\(%s\\)[[:space:]]*\\([()]\\)" parse-node-re))
+
(defun parse-prop-ident (str)
(let ((end (if (and (<= ?A (aref str 1))
(< (aref str 1) ?Z))
@@ -78,9 +81,13 @@
(substring str end))))
(defun parse-prop-vals (str)
- (parse-many parse-prop-re str
+ (parse-many parse-prop-val-re str
(collect (match-string 1 str))))
+(defun parse-prop (str)
+ (multiple-value-bind (id rest) (parse-prop-ident str)
+ (cons id (parse-prop-vals rest))))
+
(defun parse-props (str)
(parse-many parse-prop-re str
(multiple-value-bind (id rest) (parse-prop-ident (match-string 1 str))