[Properly parse alternative spell descriptors in parse-spell-school
clinton@unknownlamer.org**20080427172809] {
hunk ./src/srd-import.lisp 42
-	 (:alternation :word-boundary ", "))))
+	 (:alternation :word-boundary ", " " or "))))
hunk ./src/srd-import.lisp 87
-    (cl-ppcre:create-scanner school-modifiers-pattern)))
+    (cl-ppcre:create-scanner
+     '(:sequence
+       (:register (:greedy-repetition 1 nil (:char-class
+					     #\-
+					     :word-char-class)))
+       (:alternation
+	(:sequence " or " (:register
+			   (:greedy-repetition 1 nil (:char-class
+						      #\-
+						      :word-char-class))))
+	:word-boundary
+	", ")))))
hunk ./src/srd-import.lisp 204
-		  (flet ((local-intern (n)
-			   (if n (intern (string-upcase n)
-					 :org.unknownlamer.dnd-tools.db.symbols))))
-		    (typecase component
-		      (string (local-intern component))
-		      (cons (mapcar
-			     #'local-intern component)))))
+		  (labels
+		      ((local-intern (n)
+			 (typecase n
+			   (string (intern (string-upcase n)
+					   :org.unknownlamer.dnd-tools.db.symbols))
+			   (cons (mapcar #'local-intern n))
+			   (t n))))
+		    (local-intern component)))
hunk ./src/srd-import.lisp 219
-		      (ppcre:all-matches-as-strings
-		       *spell-school-modifiers-scanner* type)
+		      (let ((result (list))) ; lack of map-register-groups ...
+			(ppcre:do-register-groups (modifier alternative)
+			    (*spell-school-modifiers-scanner* type)
+			  (push (if alternative
+				    (list :or modifier alternative)
+				    modifier)
+				result))
+			result)
hunk ./src/srd-import.lisp 235
-	,@(let ((modifiers (remove-if (rcurry #'member '(or)) modifiers )))
-	       (cond (modifiers
-		      (let ((alignments '(good chaotic lawful evil)))
-			(list
-			 (if-bind alignment
-			     (remove-if-not (lambda (item) (member item alignments))
-					    modifiers)
-			   `(:alignment . ,(car alignment)))
-			 (if-bind other
-			     (remove-if (lambda (item) (member item alignments))
-					modifiers)
-			   `(:modifiers . ,other)))))))
+	,@(cond (modifiers
+		 (let ((alignments '(good chaotic lawful evil)))
+		   (list
+		    (if-bind alignment
+			(remove-if-not (lambda (item) (member item alignments))
+				       modifiers)
+		      `(:alignment . ,(car alignment)))
+		    (if-bind other
+			(remove-if (lambda (item) (member item alignments))
+				   modifiers)
+		      `(:modifiers . ,other))))))
}