From e5a53957b3c91510d1f06ed54121231e3c94a86b Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Fri, 14 Feb 2025 17:24:35 +0000 Subject: Some serialisers to make pretty outputs I can now use this package for a console application since we can pretty print cards. --- model.lisp | 29 +++++++++++++++++++++++++++++ packages.lisp | 4 +++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/model.lisp b/model.lisp index 068844b..019e881 100644 --- a/model.lisp +++ b/model.lisp @@ -88,3 +88,32 @@ (if (eq r1 r2) (suit< s1 s2) (rank< r1 r2)))) + +(fn suit->str (suit) (-> (suit) string) + (case suit + (:Diamonds "◆") + (:Clubs "♣") + (:Hearts "♥") + (:Spades "♠") + (t "Joker"))) + +(fn rank->str (rank) (-> (rank) string) + (case rank + (:Ace "Ace") + (:Jack "Jack") + (:Queen "Queen") + (:King "King") + (t (format nil "~a" rank)))) + +(fn card->str (card) (-> (card) string) + (destructuring-bind (rank . suit) card + (if (eq suit :Joker) + "Joker" + (format nil "~a[~a]" + (rank->str rank) + (suit->str suit))))) + +(fn cardset->str (cardset) (-> (cardset) string) + (->> cardset + (mapcar #'card->str) + (format nil "~{~a~^, ~}"))) diff --git a/packages.lisp b/packages.lisp index 14b4706..3ea9ba7 100644 --- a/packages.lisp +++ b/packages.lisp @@ -41,7 +41,9 @@ :int->suit :int->rank :int->card :suit->int :rank->int :card->int ;; Comparators - :suit< :rank< :card<)) + :suit< :rank< :card< + ;; Serialisers + :suit->str :rank->str :card->str :cardset->str)) (defpackage cantedraw.main (:use :cl :cantedraw.lib.macros :cantedraw.lib.functions) -- cgit v1.2.3-13-gbd6f