Refactor merge
authorSiraaj Khandkar <siraaj@khandkar.net>
Thu, 2 Dec 2021 13:34:37 +0000 (08:34 -0500)
committerSiraaj Khandkar <siraaj@khandkar.net>
Thu, 2 Dec 2021 13:34:37 +0000 (08:34 -0500)
info.rkt
tt.rkt

index 562c237..cffc1be 100644 (file)
--- a/info.rkt
+++ b/info.rkt
@@ -6,7 +6,7 @@
 (define pkg-desc
   "twtxt client")
 (define version
-  "0.31.0")
+  "0.31.1")
 (define pkg-authors
   '("Siraaj Khandkar <siraaj@khandkar.net>"))
 (define deps
diff --git a/tt.rkt b/tt.rkt
index 9f0d665..d11c151 100644 (file)
--- a/tt.rkt
+++ b/tt.rkt
 
 (: peers-merge (-> (Listof Peer) * (Listof Peer)))
 (define (peers-merge . peer-sets)
-  (define (merge peers)
+  (define (merge-2 p1 p2)
+    (match* (p1 p2)
+      [((Peer n1 _ _ _) (Peer n2 _ _ _)) #:when (and n1 n2) p1] ; TODO compare which is more-common?
+      [((Peer #f _ _ _) (Peer #f _ _ _))                    p1] ; TODO update with most-common nick?
+      [((Peer n1 _ _ _) (Peer #f _ _ _))                    p1]
+      [((Peer #f _ _ _) (Peer n2 _ _ _))                    p2]))
+  (define (merge-n peers)
     (match peers
       ['() (raise 'impossible)]
       [(list p) p]
-      [(list* p1 p2 ps)
-       (let* ([n1 (Peer-nick p1)]
-              [n2 (Peer-nick p2)]
-              [p (cond
-                   ; TODO Try to pick from nicks db: preferred, otherwise seen
-                   [(and (not n1) (not n2)) p1] ; TODO update with most-common nick
-                   [(and      n1       n2 ) p1] ; TODO compare which is more-common
-                   [(and      n1  (not n2)) p1]
-                   [(and (not n1)      n2)  p2]
-                   [else
-                     (raise 'impossible)])])
-         (merge (cons p ps)))]))
-  (sort (map merge (group-by Peer-url-str (append* peer-sets)))
+      [(list* p1 p2 ps) (merge-n (cons (merge-2 p1 p2) ps))]))
+  (sort (map merge-n (group-by Peer-url-str (append* peer-sets)))
         (match-lambda**
           [((Peer _ _ u1 _) (Peer _ _ u2 _)) (string<? u1 u2)])))
 
This page took 0.023451 seconds and 4 git commands to generate.