Some serialisers to make pretty outputs

I can now use this package for a console application since we can
pretty print cards.
This commit is contained in:
2025-02-14 17:24:35 +00:00
parent 9ab585d7af
commit e5a53957b3
2 changed files with 32 additions and 1 deletions

View File

@@ -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~^, ~}")))

View File

@@ -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)