From 6cedad920413e724fd100e35d817ec98173c4ec4 Mon Sep 17 00:00:00 2001 From: Siraaj Khandkar Date: Thu, 2 Dec 2021 08:34:37 -0500 Subject: [PATCH] Refactor merge --- info.rkt | 2 +- tt.rkt | 23 +++++++++-------------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/info.rkt b/info.rkt index 562c237..cffc1be 100644 --- 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 ")) (define deps diff --git a/tt.rkt b/tt.rkt index 9f0d665..d11c151 100644 --- a/tt.rkt +++ b/tt.rkt @@ -166,23 +166,18 @@ (: 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