[Improve output of parse-spell-level clinton@unknownlamer.org**20080417174122 * Handle spell domains * Differentiate between classes and domains in alist structure ] hunk ./src/srd-import.lisp 111 - (push (list class (parse-integer level)) levels)))) - (srd-abbreviations '(("Brd" . bard) - ("Clr" . cleric) - ("Drd" . druid) - ("Pal" . paladin) - ("Rgr" . ranger) - ("Wiz" . wizard)))) - (mapcar (lambda (spell-level) - (cons (cdr (assoc (car spell-level) srd-abbreviations :test #'string=)) - (cdr spell-level))) - caster-levels))) + (push (cons class (parse-integer level)) levels)))) + (class-abbreviations '(("Brd" . bard) + ("Clr" . cleric) + ("Drd" . druid) + ("Pal" . paladin) + ("Rgr" . ranger) + ("Wiz" . wizard)))) + (let ((parsed-levels + (mapcar (lambda (spell-level) + (cons (or (cdr (assoc (car spell-level) class-abbreviations :test #'string=)) + (intern (string-upcase (car spell-level)) + :org.unknownlamer.dnd-tools.srd-import)) + + (cdr spell-level))) + + caster-levels))) + `(,@(if-bind classes + (remove-if-not (lambda (e) + (member (car e) class-abbreviations :key #'cdr)) + parsed-levels) + `((:classes . ,classes))) + ,@(if-bind domains (remove-if (lambda (e) + (member (car e) class-abbreviations :key #'cdr)) + parsed-levels) + `((:domains . ,domains))) + + )))) +