rewrite stanza-find-property with sxpath
authorrekado <rekado@elephly.net>
Tue, 16 Dec 2014 17:35:29 +0000 (18:35 +0100)
committerrekado <rekado@elephly.net>
Tue, 16 Dec 2014 17:35:29 +0000 (18:35 +0100)
xmpp.scm

index bade3c1..936013f 100644 (file)
--- a/xmpp.scm
+++ b/xmpp.scm
@@ -124,14 +124,12 @@ handlers."
 
 \f
 (define (stanza-find-property property-name stanza)
-  "Return the given property of a stanza or #f if there is none."
-  (let ((properties (cadr stanza)))
-    (if (equal? '@ (car properties))
-        (let ((res (find (lambda (prop) (eq? property-name (car prop)))
-                         (cdr properties))))
-          (if res
-              (cadr res)
-              #f)))))
+  "Return the value of a given stanza property or #f if there is
+none."
+  (let ((property ((sxpath `(* @ ,property-name)) stanza)))
+    (if (null? property)
+        #f
+        (cadar property))))
 
 ;; generate accessor functions for various stanza attributes
 (for-each