diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2025-02-14 17:24:35 +0000 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2025-02-14 17:24:35 +0000 |
commit | e5a53957b3c91510d1f06ed54121231e3c94a86b (patch) | |
tree | 1da33aac141e0bdfe253f7cad806a20b6fec9b81 | |
parent | 9ab585d7affcfde2c48c6b52cb2d73953e95d428 (diff) | |
download | cantedraw-e5a53957b3c91510d1f06ed54121231e3c94a86b.tar.gz cantedraw-e5a53957b3c91510d1f06ed54121231e3c94a86b.tar.bz2 cantedraw-e5a53957b3c91510d1f06ed54121231e3c94a86b.zip |
Some serialisers to make pretty outputs
I can now use this package for a console application since we can
pretty print cards.
-rw-r--r-- | model.lisp | 29 | ||||
-rw-r--r-- | packages.lisp | 4 |
2 files changed, 32 insertions, 1 deletions
@@ -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) |