]> gitweb.factorcode.org Git - factor.git/commitdiff
scryfall: parse mtga deck format clean-linux-x86-32 clean-linux-x86-64 clean-macosx-x86-64 clean-windows-x86-32 clean-windows-x86-64 main master
authorDoug Coleman <doug.coleman@gmail.com>
Wed, 17 Apr 2024 03:26:12 +0000 (22:26 -0500)
committerDoug Coleman <doug.coleman@gmail.com>
Wed, 17 Apr 2024 03:26:12 +0000 (22:26 -0500)
extra/scryfall/scryfall.factor

index e3f2d35bfcd91fec0a992e263d5afdc035667f59..b877532c5363a163e2de017b0a2a57b3d1e74436 100644 (file)
@@ -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' )
     [
         {