diff options
author | Doug Coleman <doug.coleman@gmail.com> | 2024-04-16 22:26:12 -0500 |
---|---|---|
committer | Doug Coleman <doug.coleman@gmail.com> | 2024-04-16 22:26:12 -0500 |
commit | 8b61f7232647f3e1188acc0894deb55aa405d8b1 (patch) | |
tree | f9e0599489bf8c243ec88365f2b1a6c74e2a9977 | |
parent | 11e31854c6a5a2e4932c3890e6a8358576a78a8f (diff) |
scryfall: parse mtga deck format
-rw-r--r-- | extra/scryfall/scryfall.factor | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/extra/scryfall/scryfall.factor b/extra/scryfall/scryfall.factor index e3f2d35bfc..b877532c53 100644 --- a/extra/scryfall/scryfall.factor +++ b/extra/scryfall/scryfall.factor @@ -611,6 +611,28 @@ CONSTANT: rarity-to-number H{ : cards-by-name ( seq name -- seq' ) filter-by-name-itext sort-by-release ; : cards-by-name. ( seq name -- ) cards-by-name [ "name" of ] sort-by normal-cards. ; +: parse-cards ( strings -- seq ) + [ + [ blank? ] trim + " " split1 + [ string>number ] + [ standard-cards swap cards-by-name first ] bi* <array> + ] map concat ; + +: parse-mtga-deck ( string -- deck sideboard ) + [ blank? ] trim + "Deck" ?head drop + string-lines + "Sideboard" split1 + [ parse-cards ] bi@ ; + +: sort-by-deck-order ( seq -- seq' ) + [ "Land" any-type? not ] partition + [ sort-by-set-colors ] bi@ append ; + +: deck. ( seq -- ) + sort-by-deck-order normal-cards. ; + : filter-mtg-cheat-sheet ( seq -- seq' ) [ { |