simplify the row printing code. further simplification to follow.
This commit is contained in:
parent
bce9733d46
commit
038dd4d78a
|
@ -1,4 +1,8 @@
|
||||||
zig-cache/
|
zig-cache/
|
||||||
zig-out/
|
zig-out/
|
||||||
|
zig-out
|
||||||
|
hyperfine*
|
||||||
|
strace*
|
||||||
|
output.pdf
|
||||||
.zig-cache/
|
.zig-cache/
|
||||||
oracle-data/*
|
oracle-data/*
|
||||||
|
|
|
@ -21,8 +21,11 @@ pub fn build(b: *std.Build) void {
|
||||||
exe.linkLibC();
|
exe.linkLibC();
|
||||||
exe.root_module.addImport("grapheme", zg.module("grapheme"));
|
exe.root_module.addImport("grapheme", zg.module("grapheme"));
|
||||||
exe.root_module.addImport("DisplayWidth", zg.module("DisplayWidth"));
|
exe.root_module.addImport("DisplayWidth", zg.module("DisplayWidth"));
|
||||||
|
const zigJsonDependency = b.dependency("zig-json", .{});
|
||||||
const clap = b.dependency("clap", .{});
|
const clap = b.dependency("clap", .{});
|
||||||
|
|
||||||
exe.root_module.addImport("clap", clap.module("clap"));
|
exe.root_module.addImport("clap", clap.module("clap"));
|
||||||
|
exe.root_module.addImport("json", zigJsonDependency.module("zig-json"));
|
||||||
|
|
||||||
b.installArtifact(exe);
|
b.installArtifact(exe);
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,10 @@
|
||||||
.url = "git+https://github.com/Hejsil/zig-clap#c0193e9247335a6c1688b946325060289405de2a",
|
.url = "git+https://github.com/Hejsil/zig-clap#c0193e9247335a6c1688b946325060289405de2a",
|
||||||
.hash = "12207ee987ce045596cb992cfb15b0d6d9456e50d4721c3061c69dabc2962053644d",
|
.hash = "12207ee987ce045596cb992cfb15b0d6d9456e50d4721c3061c69dabc2962053644d",
|
||||||
},
|
},
|
||||||
|
.@"zig-json" = .{
|
||||||
|
.url = "https://codeload.github.com/part1zano/zig-json/tar.gz/master",
|
||||||
|
.hash = "1220aaba53d38fd5689b6a29e496ab8a262c54ae8a52321e61ed8da9f1d968c69e7e",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
.paths = .{
|
.paths = .{
|
||||||
// This makes *all* files, recursively, included in this package. It is generally
|
// This makes *all* files, recursively, included in this package. It is generally
|
||||||
|
|
369
output.pdf
369
output.pdf
|
@ -3,7 +3,7 @@
|
||||||
1 0 obj
|
1 0 obj
|
||||||
<<
|
<<
|
||||||
/Creator (My Software )
|
/Creator (My Software )
|
||||||
/CreationDate (D:20240819154405Z)
|
/CreationDate (D:20240828221626Z)
|
||||||
>>
|
>>
|
||||||
endobj
|
endobj
|
||||||
2 0 obj
|
2 0 obj
|
||||||
|
@ -1032,258 +1032,258 @@ BT /GS0 gs 10.000000 696.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
149 0 obj
|
149 0 obj
|
||||||
<< /Length 198 >>stream
|
<< /Length 197 >>stream
|
||||||
BT /GS0 gs 10.000000 684.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|Remand {1}{U} \(Instant\) >> |No More Lies {W}{U} |Portent {U} \(Sorcery\) >> ) Tj ET
|
BT /GS0 gs 10.000000 684.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|Remand {1}{U} \(Instant\) >> |No More Lies {W}{U} |Ice-Fang Coatl {G}{U} \(Snow ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
150 0 obj
|
150 0 obj
|
||||||
<< /Length 196 >>stream
|
<< /Length 197 >>stream
|
||||||
BT /GS0 gs 10.000000 672.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|Counter target spell. If |\(Instant\) >> Counter target |Look at the top three cards ) Tj ET
|
BT /GS0 gs 10.000000 672.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|Counter target spell. If |\(Instant\) >> Counter target |Creature — Snake\) >> Flash ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
151 0 obj
|
151 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 660.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|that spell is countered this |spell unless its controller |of target player's library, ) Tj ET
|
BT /GS0 gs 10.000000 660.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|that spell is countered this |spell unless its controller |Flying When ~ enters the ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
152 0 obj
|
152 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 648.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|way, put it into its owner's |pays {3}. If that spell is |then put them back in any ) Tj ET
|
BT /GS0 gs 10.000000 648.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|way, put it into its owner's |pays {3}. If that spell is |battlefield, draw a card. ~ ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
153 0 obj
|
153 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 636.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|hand instead of into that |countered this way, exile it |order. You may have that ) Tj ET
|
BT /GS0 gs 10.000000 636.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|hand instead of into that |countered this way, exile it |has deathtouch as long as ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
154 0 obj
|
154 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 624.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|player's graveyard. Draw a |instead of putting it into |player shuffle. Draw a card ) Tj ET
|
BT /GS0 gs 10.000000 624.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|player's graveyard. Draw a |instead of putting it into |you control at least three ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
155 0 obj
|
155 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 196 >>stream
|
||||||
BT /GS0 gs 10.000000 612.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|card. |its owner's graveyard. |at the beginning of the next ) Tj ET
|
BT /GS0 gs 10.000000 612.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|card. |its owner's graveyard. |other snow permanents. \(1/1\) ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
156 0 obj
|
156 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 600.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (| | |turn's upkeep. ) Tj ET
|
BT /GS0 gs 10.000000 600.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (| | | ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
157 0 obj
|
157 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 196 >>stream
|
||||||
BT /GS0 gs 10.000000 588.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (| | | ) Tj ET
|
BT /GS0 gs 10.000000 588.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|Portent {U} \(Sorcery\) >> |Snapcaster Mage {1}{U} |Eiganjo, Seat of the Empire ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
158 0 obj
|
158 0 obj
|
||||||
<< /Length 195 >>stream
|
<< /Length 198 >>stream
|
||||||
BT /GS0 gs 10.000000 576.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|Ice-Fang Coatl {G}{U} \(Snow |Snapcaster Mage {1}{U} |Eiganjo, Seat of the Empire ) Tj ET
|
BT /GS0 gs 10.000000 576.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|Look at the top three cards |\(Creature — Human Wizard\) |\(Legendary Land\) >> {T}: Add ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
159 0 obj
|
159 0 obj
|
||||||
<< /Length 199 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 564.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|Creature — Snake\) >> Flash |\(Creature — Human Wizard\) |\(Legendary Land\) >> {T}: Add ) Tj ET
|
BT /GS0 gs 10.000000 564.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|of target player's library, |>> Flash When ~ enters the |{W}. Channel — {2}{W}, ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
160 0 obj
|
160 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 552.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|Flying When ~ enters the |>> Flash When ~ enters the |{W}. Channel — {2}{W}, ) Tj ET
|
BT /GS0 gs 10.000000 552.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|then put them back in any |battlefield, target instant |Discard ~: It deals 4 damage ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
161 0 obj
|
161 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 540.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|battlefield, draw a card. ~ |battlefield, target instant |Discard ~: It deals 4 damage ) Tj ET
|
BT /GS0 gs 10.000000 540.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|order. You may have that |or sorcery card in your |to target attacking or ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
162 0 obj
|
162 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 528.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|has deathtouch as long as |or sorcery card in your |to target attacking or ) Tj ET
|
BT /GS0 gs 10.000000 528.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|player shuffle. Draw a card |graveyard gains flashback |blocking creature. This ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
163 0 obj
|
163 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 516.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|you control at least three |graveyard gains flashback |blocking creature. This ) Tj ET
|
BT /GS0 gs 10.000000 516.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|at the beginning of the next |until end of turn. The |ability costs {1} less to ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
164 0 obj
|
164 0 obj
|
||||||
<< /Length 196 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 504.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|other snow permanents. \(1/1\) |until end of turn. The |ability costs {1} less to ) Tj ET
|
BT /GS0 gs 10.000000 504.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|turn's upkeep. |flashback cost is equal to |activate for each legendary ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
165 0 obj
|
165 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 196 >>stream
|
||||||
BT /GS0 gs 10.000000 492.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (| |flashback cost is equal to |activate for each legendary ) Tj ET
|
BT /GS0 gs 10.000000 492.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (| |its mana cost. \(2/1\) |creature you control. ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
166 0 obj
|
166 0 obj
|
||||||
<< /Length 196 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 480.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (| |its mana cost. \(2/1\) |creature you control. ) Tj ET
|
BT /GS0 gs 10.000000 480.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (| | | ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
167 0 obj
|
167 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 195 >>stream
|
||||||
BT /GS0 gs 10.000000 468.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (| | | ) Tj ET
|
BT /GS0 gs 10.000000 468.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|Cosmic Rebirth {1}{G}{W} |Mystic Sanctuary \(Land — |Seasoned Dungeoneer {3}{W} ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
168 0 obj
|
168 0 obj
|
||||||
<< /Length 195 >>stream
|
<< /Length 199 >>stream
|
||||||
BT /GS0 gs 10.000000 456.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|Cosmic Rebirth {1}{G}{W} |Mystic Sanctuary \(Land — |Seasoned Dungeoneer {3}{W} ) Tj ET
|
BT /GS0 gs 10.000000 456.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|\(Instant\) >> Choose target |Island\) >> ~ enters the |\(Creature — Human Warrior\) ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
169 0 obj
|
169 0 obj
|
||||||
<< /Length 199 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 444.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|\(Instant\) >> Choose target |Island\) >> ~ enters the |\(Creature — Human Warrior\) ) Tj ET
|
BT /GS0 gs 10.000000 444.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|permanent card in your |battlefield tapped unless |>> When ~ enters the ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
170 0 obj
|
170 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 432.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|permanent card in your |battlefield tapped unless |>> When ~ enters the ) Tj ET
|
BT /GS0 gs 10.000000 432.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|graveyard. If it has mana |you control three or more |battlefield, you take the ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
171 0 obj
|
171 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 420.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|graveyard. If it has mana |you control three or more |battlefield, you take the ) Tj ET
|
BT /GS0 gs 10.000000 420.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|value 3 or less, you may put |other Islands. When ~ enters |initiative. Whenever you ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
172 0 obj
|
172 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 408.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|value 3 or less, you may put |other Islands. When ~ enters |initiative. Whenever you ) Tj ET
|
BT /GS0 gs 10.000000 408.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|it onto the battlefield. If |the battlefield untapped, |attack, target attacking ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
173 0 obj
|
173 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 396.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|it onto the battlefield. If |the battlefield untapped, |attack, target attacking ) Tj ET
|
BT /GS0 gs 10.000000 396.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|you don't put it onto the |you may put target instant |Cleric, Rogue, Warrior, or ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
174 0 obj
|
174 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 384.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|you don't put it onto the |you may put target instant |Cleric, Rogue, Warrior, or ) Tj ET
|
BT /GS0 gs 10.000000 384.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|battlefield, put it into |or sorcery card from your |Wizard gains protection from ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
175 0 obj
|
175 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 372.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|battlefield, put it into |or sorcery card from your |Wizard gains protection from ) Tj ET
|
BT /GS0 gs 10.000000 372.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|your hand. You gain 3 life. |graveyard on top of your |creatures until end of turn. ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
176 0 obj
|
176 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 196 >>stream
|
||||||
BT /GS0 gs 10.000000 360.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|your hand. You gain 3 life. |graveyard on top of your |creatures until end of turn. ) Tj ET
|
BT /GS0 gs 10.000000 360.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (| |library. |It explores. \(3/4\) ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
177 0 obj
|
177 0 obj
|
||||||
<< /Length 196 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 348.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (| |library. |It explores. \(3/4\) ) Tj ET
|
BT /GS0 gs 10.000000 348.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (| | | ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
178 0 obj
|
178 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 196 >>stream
|
||||||
BT /GS0 gs 10.000000 336.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (| | | ) Tj ET
|
BT /GS0 gs 10.000000 336.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|Murktide Regent {5}{U}{U} |Shark Typhoon {5}{U} |Field of the Dead \(Land\) >> ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
179 0 obj
|
179 0 obj
|
||||||
<< /Length 196 >>stream
|
<< /Length 198 >>stream
|
||||||
BT /GS0 gs 10.000000 324.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|Murktide Regent {5}{U}{U} |Shark Typhoon {5}{U} |Field of the Dead \(Land\) >> ) Tj ET
|
BT /GS0 gs 10.000000 324.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|\(Creature — Dragon\) >> |\(Enchantment\) >> Whenever |~ enters the battlefield ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
180 0 obj
|
180 0 obj
|
||||||
<< /Length 198 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 312.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|\(Creature — Dragon\) >> |\(Enchantment\) >> Whenever |~ enters the battlefield ) Tj ET
|
BT /GS0 gs 10.000000 312.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|Delve Flying ~ enters the |you cast a noncreature |tapped. {T}: Add {C}. ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
181 0 obj
|
181 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 300.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|Delve Flying ~ enters the |you cast a noncreature |tapped. {T}: Add {C}. ) Tj ET
|
BT /GS0 gs 10.000000 300.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|battlefield with a +1/+1 |spell, create an X/X blue |Whenever ~ or another land ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
182 0 obj
|
182 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 288.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|battlefield with a +1/+1 |spell, create an X/X blue |Whenever ~ or another land ) Tj ET
|
BT /GS0 gs 10.000000 288.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|counter on it for each |Shark creature token with |enters the battlefield under ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
183 0 obj
|
183 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 276.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|counter on it for each |Shark creature token with |enters the battlefield under ) Tj ET
|
BT /GS0 gs 10.000000 276.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|instant and sorcery card |flying, where X is that |your control, if you control ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
184 0 obj
|
184 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 264.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|instant and sorcery card |flying, where X is that |your control, if you control ) Tj ET
|
BT /GS0 gs 10.000000 264.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|exiled with it. Whenever an |spell's mana value. Cycling |seven or more lands with ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
185 0 obj
|
185 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 252.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|exiled with it. Whenever an |spell's mana value. Cycling |seven or more lands with ) Tj ET
|
BT /GS0 gs 10.000000 252.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|instant or sorcery card |{X}{1}{U} When you cycle ~, |different names, create a ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
186 0 obj
|
186 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 240.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|instant or sorcery card |{X}{1}{U} When you cycle ~, |different names, create a ) Tj ET
|
BT /GS0 gs 10.000000 240.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|leaves your graveyard, put a |create an X/X blue Shark |2/2 black Zombie creature ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
187 0 obj
|
187 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 196 >>stream
|
||||||
BT /GS0 gs 10.000000 228.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|leaves your graveyard, put a |create an X/X blue Shark |2/2 black Zombie creature ) Tj ET
|
BT /GS0 gs 10.000000 228.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|+1/+1 counter on ~. \(3/3\) |creature token with flying. |token. ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
188 0 obj
|
188 0 obj
|
||||||
<< /Length 196 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 216.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|+1/+1 counter on ~. \(3/3\) |creature token with flying. |token. ) Tj ET
|
BT /GS0 gs 10.000000 216.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (| | | ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
189 0 obj
|
189 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 195 >>stream
|
||||||
BT /GS0 gs 10.000000 204.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (| | | ) Tj ET
|
BT /GS0 gs 10.000000 204.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|Planar Genesis {G}{U} |Leyline Binding {5}{W} |Solitude {3}{W}{W} \(Creature ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
190 0 obj
|
190 0 obj
|
||||||
<< /Length 195 >>stream
|
<< /Length 199 >>stream
|
||||||
BT /GS0 gs 10.000000 192.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|Planar Genesis {G}{U} |Leyline Binding {5}{W} |Solitude {3}{W}{W} \(Creature ) Tj ET
|
BT /GS0 gs 10.000000 192.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|\(Instant\) >> Look at the top |\(Enchantment\) >> Flash |— Elemental Incarnation\) ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
191 0 obj
|
191 0 obj
|
||||||
<< /Length 199 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 180.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|\(Instant\) >> Look at the top |\(Enchantment\) >> Flash |— Elemental Incarnation\) ) Tj ET
|
BT /GS0 gs 10.000000 180.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|four cards of your library. |Domain — This spell costs |>> Flash Lifelink When ~ ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
192 0 obj
|
192 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 168.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|four cards of your library. |Domain — This spell costs |>> Flash Lifelink When ~ ) Tj ET
|
BT /GS0 gs 10.000000 168.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|You may put a land card from |{1} less to cast for each |enters the battlefield, ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
193 0 obj
|
193 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 156.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|You may put a land card from |{1} less to cast for each |enters the battlefield, ) Tj ET
|
BT /GS0 gs 10.000000 156.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|among them onto the |basic land type among lands |exile up to one other target ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
194 0 obj
|
194 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 144.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|among them onto the |basic land type among lands |exile up to one other target ) Tj ET
|
BT /GS0 gs 10.000000 144.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|battlefield tapped. If you |you control. When ~ enters |creature. That creature's ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
195 0 obj
|
195 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 132.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|battlefield tapped. If you |you control. When ~ enters |creature. That creature's ) Tj ET
|
BT /GS0 gs 10.000000 132.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|don't, put a card from among |the battlefield, exile |controller gains life equal ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
196 0 obj
|
196 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 120.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|don't, put a card from among |the battlefield, exile |controller gains life equal ) Tj ET
|
BT /GS0 gs 10.000000 120.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|them into your hand. Put the |target nonland permanent an |to its power. Evoke—Exile ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
197 0 obj
|
197 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 194 >>stream
|
||||||
BT /GS0 gs 10.000000 108.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|them into your hand. Put the |target nonland permanent an |to its power. Evoke—Exile ) Tj ET
|
BT /GS0 gs 10.000000 108.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|rest on the bottom of your |opponent controls until ~ |a white card from your hand. ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
198 0 obj
|
198 0 obj
|
||||||
<< /Length 193 >>stream
|
<< /Length 195 >>stream
|
||||||
BT /GS0 gs 10.000000 96.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|rest on the bottom of your |opponent controls until ~ |a white card from your hand. ) Tj ET
|
BT /GS0 gs 10.000000 96.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|library in a random order. |leaves the battlefield. |\(3/2\) ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
199 0 obj
|
199 0 obj
|
||||||
<< /Length 195 >>stream
|
<< /Length 193 >>stream
|
||||||
BT /GS0 gs 10.000000 84.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|library in a random order. |leaves the battlefield. |\(3/2\) ) Tj ET
|
BT /GS0 gs 10.000000 84.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (| | | ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
200 0 obj
|
200 0 obj
|
||||||
|
@ -1803,7 +1803,6 @@ endobj
|
||||||
299 0 R
|
299 0 R
|
||||||
300 0 R
|
300 0 R
|
||||||
301 0 R
|
301 0 R
|
||||||
302 0 R
|
|
||||||
]
|
]
|
||||||
>>
|
>>
|
||||||
endobj
|
endobj
|
||||||
|
@ -1813,147 +1812,142 @@ BT /GS0 gs 10.000000 792.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
275 0 obj
|
275 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 129 >>stream
|
||||||
BT /GS0 gs 10.000000 780.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|Tamiyo, Inquisitive Student | | ) Tj ET
|
BT /GS0 gs 10.000000 780.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (Tamiyo, Inquisitive Student ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
276 0 obj
|
276 0 obj
|
||||||
<< /Length 195 >>stream
|
<< /Length 128 >>stream
|
||||||
BT /GS0 gs 10.000000 768.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|{U} \(Legendary Creature — | | ) Tj ET
|
BT /GS0 gs 10.000000 768.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc ({U} \(Legendary Creature — ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
277 0 obj
|
277 0 obj
|
||||||
<< /Length 195 >>stream
|
<< /Length 129 >>stream
|
||||||
BT /GS0 gs 10.000000 756.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|Moonfolk Wizard\) >> Flying | | ) Tj ET
|
BT /GS0 gs 10.000000 756.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (Moonfolk Wizard\) >> Flying ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
278 0 obj
|
278 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 121 >>stream
|
||||||
BT /GS0 gs 10.000000 744.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|Whenever ~ attacks, | | ) Tj ET
|
BT /GS0 gs 10.000000 744.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (Whenever ~ attacks, ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
279 0 obj
|
279 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 128 >>stream
|
||||||
BT /GS0 gs 10.000000 732.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|investigate. When you draw | | ) Tj ET
|
BT /GS0 gs 10.000000 732.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (investigate. When you draw ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
280 0 obj
|
280 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 128 >>stream
|
||||||
BT /GS0 gs 10.000000 720.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|your third card in a turn, | | ) Tj ET
|
BT /GS0 gs 10.000000 720.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (your third card in a turn, ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
281 0 obj
|
281 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 127 >>stream
|
||||||
BT /GS0 gs 10.000000 708.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|exile Tamiyo, then return | | ) Tj ET
|
BT /GS0 gs 10.000000 708.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (exile Tamiyo, then return ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
282 0 obj
|
282 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 124 >>stream
|
||||||
BT /GS0 gs 10.000000 696.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|her to the battlefield | | ) Tj ET
|
BT /GS0 gs 10.000000 696.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (her to the battlefield ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
283 0 obj
|
283 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 123 >>stream
|
||||||
BT /GS0 gs 10.000000 684.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|transformed under her | | ) Tj ET
|
BT /GS0 gs 10.000000 684.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (transformed under her ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
284 0 obj
|
284 0 obj
|
||||||
<< /Length 196 >>stream
|
<< /Length 129 >>stream
|
||||||
BT /GS0 gs 10.000000 672.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|owner's control. \(0/3\) // | | ) Tj ET
|
BT /GS0 gs 10.000000 672.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (owner's control. \(0/3\) // ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
285 0 obj
|
285 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 126 >>stream
|
||||||
BT /GS0 gs 10.000000 660.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|Tamiyo, Seasoned Scholar | | ) Tj ET
|
BT /GS0 gs 10.000000 660.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (Tamiyo, Seasoned Scholar ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
286 0 obj
|
286 0 obj
|
||||||
<< /Length 195 >>stream
|
<< /Length 128 >>stream
|
||||||
BT /GS0 gs 10.000000 648.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|\(Legendary Planeswalker — | | ) Tj ET
|
BT /GS0 gs 10.000000 648.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (\(Legendary Planeswalker — ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
287 0 obj
|
287 0 obj
|
||||||
<< /Length 195 >>stream
|
<< /Length 128 >>stream
|
||||||
BT /GS0 gs 10.000000 636.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|Tamiyo\) >> +2: Until your | | ) Tj ET
|
BT /GS0 gs 10.000000 636.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (Tamiyo\) >> +2: Until your ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
288 0 obj
|
288 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 123 >>stream
|
||||||
BT /GS0 gs 10.000000 624.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|next turn, whenever a | | ) Tj ET
|
BT /GS0 gs 10.000000 624.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (next turn, whenever a ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
289 0 obj
|
289 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 127 >>stream
|
||||||
BT /GS0 gs 10.000000 612.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|creature attacks you or a | | ) Tj ET
|
BT /GS0 gs 10.000000 612.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (creature attacks you or a ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
290 0 obj
|
290 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 130 >>stream
|
||||||
BT /GS0 gs 10.000000 600.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|planeswalker you control, it | | ) Tj ET
|
BT /GS0 gs 10.000000 600.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (planeswalker you control, it ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
291 0 obj
|
291 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 125 >>stream
|
||||||
BT /GS0 gs 10.000000 588.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|gets -1/-0 until end of | | ) Tj ET
|
BT /GS0 gs 10.000000 588.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (gets -1/-0 until end of ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
292 0 obj
|
292 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 125 >>stream
|
||||||
BT /GS0 gs 10.000000 576.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|turn. –3: Return target | | ) Tj ET
|
BT /GS0 gs 10.000000 576.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (turn. –3: Return target ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
293 0 obj
|
293 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 130 >>stream
|
||||||
BT /GS0 gs 10.000000 564.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|instant or sorcery card from | | ) Tj ET
|
BT /GS0 gs 10.000000 564.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (instant or sorcery card from ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
294 0 obj
|
294 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 130 >>stream
|
||||||
BT /GS0 gs 10.000000 552.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|your graveyard to your hand. | | ) Tj ET
|
BT /GS0 gs 10.000000 552.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (your graveyard to your hand. ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
295 0 obj
|
295 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 127 >>stream
|
||||||
BT /GS0 gs 10.000000 540.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|If it's a green card, add | | ) Tj ET
|
BT /GS0 gs 10.000000 540.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (If it's a green card, add ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
296 0 obj
|
296 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 128 >>stream
|
||||||
BT /GS0 gs 10.000000 528.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|one mana of any color. –7: | | ) Tj ET
|
BT /GS0 gs 10.000000 528.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (one mana of any color. –7: ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
297 0 obj
|
297 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 130 >>stream
|
||||||
BT /GS0 gs 10.000000 516.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|Draw cards equal to half the | | ) Tj ET
|
BT /GS0 gs 10.000000 516.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (Draw cards equal to half the ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
298 0 obj
|
298 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 125 >>stream
|
||||||
BT /GS0 gs 10.000000 504.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|number of cards in your | | ) Tj ET
|
BT /GS0 gs 10.000000 504.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (number of cards in your ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
299 0 obj
|
299 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 130 >>stream
|
||||||
BT /GS0 gs 10.000000 492.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|library, rounded up. You get | | ) Tj ET
|
BT /GS0 gs 10.000000 492.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (library, rounded up. You get ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
300 0 obj
|
300 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 129 >>stream
|
||||||
BT /GS0 gs 10.000000 480.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|an emblem with "You have no | | ) Tj ET
|
BT /GS0 gs 10.000000 480.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (an emblem with "You have no ) Tj ET
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
301 0 obj
|
301 0 obj
|
||||||
<< /Length 194 >>stream
|
<< /Length 125 >>stream
|
||||||
BT /GS0 gs 10.000000 468.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (|maximum hand size." [2] | | ) Tj ET
|
BT /GS0 gs 10.000000 468.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (maximum hand size." [2] ) Tj ET
|
||||||
endstream
|
|
||||||
endobj
|
|
||||||
302 0 obj
|
|
||||||
<< /Length 194 >>stream
|
|
||||||
BT /GS0 gs 10.000000 456.000000 TD /F2 8.000000 Tf 0.000000 0.000000 0.000000 rg 0.000000 Tc (| | | ) Tj ET
|
|
||||||
endstream
|
endstream
|
||||||
endobj
|
endobj
|
||||||
xref
|
xref
|
||||||
0 303
|
0 302
|
||||||
0000000000 65535 f
|
0000000000 65535 f
|
||||||
0000000017 00000 n
|
0000000017 00000 n
|
||||||
0000000157 00000 n
|
0000000157 00000 n
|
||||||
|
@ -2104,26 +2098,26 @@ xref
|
||||||
0000038977 00000 n
|
0000038977 00000 n
|
||||||
0000039228 00000 n
|
0000039228 00000 n
|
||||||
0000039479 00000 n
|
0000039479 00000 n
|
||||||
0000039734 00000 n
|
0000039733 00000 n
|
||||||
0000039987 00000 n
|
0000039987 00000 n
|
||||||
0000040238 00000 n
|
0000040238 00000 n
|
||||||
0000040489 00000 n
|
0000040489 00000 n
|
||||||
0000040740 00000 n
|
0000040740 00000 n
|
||||||
0000040991 00000 n
|
0000040991 00000 n
|
||||||
0000041242 00000 n
|
0000041244 00000 n
|
||||||
0000041493 00000 n
|
0000041495 00000 n
|
||||||
0000041744 00000 n
|
0000041748 00000 n
|
||||||
0000041996 00000 n
|
0000042003 00000 n
|
||||||
0000042252 00000 n
|
0000042254 00000 n
|
||||||
0000042503 00000 n
|
0000042505 00000 n
|
||||||
0000042754 00000 n
|
0000042756 00000 n
|
||||||
0000043005 00000 n
|
0000043007 00000 n
|
||||||
0000043256 00000 n
|
0000043258 00000 n
|
||||||
0000043509 00000 n
|
0000043509 00000 n
|
||||||
0000043760 00000 n
|
0000043762 00000 n
|
||||||
0000044013 00000 n
|
0000044013 00000 n
|
||||||
0000044264 00000 n
|
0000044265 00000 n
|
||||||
0000044516 00000 n
|
0000044521 00000 n
|
||||||
0000044772 00000 n
|
0000044772 00000 n
|
||||||
0000045023 00000 n
|
0000045023 00000 n
|
||||||
0000045274 00000 n
|
0000045274 00000 n
|
||||||
|
@ -2131,10 +2125,10 @@ xref
|
||||||
0000045776 00000 n
|
0000045776 00000 n
|
||||||
0000046027 00000 n
|
0000046027 00000 n
|
||||||
0000046278 00000 n
|
0000046278 00000 n
|
||||||
0000046529 00000 n
|
0000046531 00000 n
|
||||||
0000046782 00000 n
|
0000046782 00000 n
|
||||||
0000047033 00000 n
|
0000047035 00000 n
|
||||||
0000047286 00000 n
|
0000047290 00000 n
|
||||||
0000047541 00000 n
|
0000047541 00000 n
|
||||||
0000047792 00000 n
|
0000047792 00000 n
|
||||||
0000048043 00000 n
|
0000048043 00000 n
|
||||||
|
@ -2142,10 +2136,10 @@ xref
|
||||||
0000048545 00000 n
|
0000048545 00000 n
|
||||||
0000048796 00000 n
|
0000048796 00000 n
|
||||||
0000049047 00000 n
|
0000049047 00000 n
|
||||||
0000049298 00000 n
|
0000049300 00000 n
|
||||||
0000049551 00000 n
|
0000049551 00000 n
|
||||||
0000049802 00000 n
|
0000049803 00000 n
|
||||||
0000050054 00000 n
|
0000050059 00000 n
|
||||||
0000050310 00000 n
|
0000050310 00000 n
|
||||||
0000050561 00000 n
|
0000050561 00000 n
|
||||||
0000050812 00000 n
|
0000050812 00000 n
|
||||||
|
@ -2153,7 +2147,7 @@ xref
|
||||||
0000051314 00000 n
|
0000051314 00000 n
|
||||||
0000051565 00000 n
|
0000051565 00000 n
|
||||||
0000051816 00000 n
|
0000051816 00000 n
|
||||||
0000052066 00000 n
|
0000052068 00000 n
|
||||||
0000052318 00000 n
|
0000052318 00000 n
|
||||||
0000052568 00000 n
|
0000052568 00000 n
|
||||||
0000052818 00000 n
|
0000052818 00000 n
|
||||||
|
@ -2228,42 +2222,41 @@ xref
|
||||||
0000071194 00000 n
|
0000071194 00000 n
|
||||||
0000071444 00000 n
|
0000071444 00000 n
|
||||||
0000071694 00000 n
|
0000071694 00000 n
|
||||||
0000072649 00000 n
|
0000072640 00000 n
|
||||||
0000072900 00000 n
|
0000072891 00000 n
|
||||||
0000073151 00000 n
|
0000073077 00000 n
|
||||||
0000073403 00000 n
|
0000073262 00000 n
|
||||||
0000073655 00000 n
|
0000073448 00000 n
|
||||||
0000073906 00000 n
|
0000073626 00000 n
|
||||||
0000074157 00000 n
|
0000073811 00000 n
|
||||||
0000074408 00000 n
|
0000073996 00000 n
|
||||||
0000074659 00000 n
|
0000074180 00000 n
|
||||||
|
0000074361 00000 n
|
||||||
|
0000074541 00000 n
|
||||||
|
0000074727 00000 n
|
||||||
0000074910 00000 n
|
0000074910 00000 n
|
||||||
0000075161 00000 n
|
0000075095 00000 n
|
||||||
0000075414 00000 n
|
0000075280 00000 n
|
||||||
0000075665 00000 n
|
0000075460 00000 n
|
||||||
0000075917 00000 n
|
0000075644 00000 n
|
||||||
0000076169 00000 n
|
0000075831 00000 n
|
||||||
0000076420 00000 n
|
0000076013 00000 n
|
||||||
0000076671 00000 n
|
0000076195 00000 n
|
||||||
0000076922 00000 n
|
0000076382 00000 n
|
||||||
0000077173 00000 n
|
0000076569 00000 n
|
||||||
0000077424 00000 n
|
0000076753 00000 n
|
||||||
0000077675 00000 n
|
0000076938 00000 n
|
||||||
0000077926 00000 n
|
0000077125 00000 n
|
||||||
0000078177 00000 n
|
0000077307 00000 n
|
||||||
0000078428 00000 n
|
0000077494 00000 n
|
||||||
0000078679 00000 n
|
0000077680 00000 n
|
||||||
0000078930 00000 n
|
|
||||||
0000079181 00000 n
|
|
||||||
0000079432 00000 n
|
|
||||||
0000079683 00000 n
|
|
||||||
trailer
|
trailer
|
||||||
<<
|
<<
|
||||||
/Size 303
|
/Size 302
|
||||||
/Root 3 0 R
|
/Root 3 0 R
|
||||||
/Info 1 0 R
|
/Info 1 0 R
|
||||||
/ID [<b756483aba75cb8c> <001ae99317f9d2cf>]
|
/ID [<d7bc7353a448020b> <001ae4415ceae7ea>]
|
||||||
>>
|
>>
|
||||||
startxref
|
startxref
|
||||||
79934
|
77862
|
||||||
%%EOF
|
%%EOF
|
||||||
|
|
|
@ -12,6 +12,7 @@ const clap = @import("clap");
|
||||||
// https://codeberg.org/dude_the_builder/zg
|
// https://codeberg.org/dude_the_builder/zg
|
||||||
const DisplayWidth = @import("DisplayWidth");
|
const DisplayWidth = @import("DisplayWidth");
|
||||||
|
|
||||||
|
|
||||||
// https://github.com/AndreRenaud/PDFGen
|
// https://github.com/AndreRenaud/PDFGen
|
||||||
// including the header file only works for a full build, "zig run" can't find it
|
// including the header file only works for a full build, "zig run" can't find it
|
||||||
const c = @cImport({
|
const c = @cImport({
|
||||||
|
@ -20,11 +21,12 @@ const c = @cImport({
|
||||||
const print = std.debug.print;
|
const print = std.debug.print;
|
||||||
const io = std.io;
|
const io = std.io;
|
||||||
const fs = std.fs;
|
const fs = std.fs;
|
||||||
const json = std.json;
|
// const json = std.json;
|
||||||
const cwd = fs.cwd();
|
const cwd = fs.cwd();
|
||||||
const indexOf = std.mem.indexOf;
|
const indexOf = std.mem.indexOf;
|
||||||
const expect = std.testing.expect;
|
const expect = std.testing.expect;
|
||||||
const assert = std.debug.assert;
|
const assert = std.debug.assert;
|
||||||
|
const json = std.json;
|
||||||
|
|
||||||
const Card = struct {
|
const Card = struct {
|
||||||
name: []const u8 = "", //string
|
name: []const u8 = "", //string
|
||||||
|
@ -92,6 +94,7 @@ pub fn main() !void {
|
||||||
}) catch |err| {
|
}) catch |err| {
|
||||||
return err;
|
return err;
|
||||||
};
|
};
|
||||||
|
|
||||||
if(res.args.listFile) |name| {
|
if(res.args.listFile) |name| {
|
||||||
listFileName = name;
|
listFileName = name;
|
||||||
} else {
|
} else {
|
||||||
|
@ -101,7 +104,7 @@ pub fn main() !void {
|
||||||
constantHeight = std.mem.eql(u8, choice, "true");
|
constantHeight = std.mem.eql(u8, choice, "true");
|
||||||
}
|
}
|
||||||
|
|
||||||
var timer = try std.time.Timer.start();
|
// var timer = try std.time.Timer.start();
|
||||||
const oracleFileSize = (try cwd.statFile(oracleFileName)).size;
|
const oracleFileSize = (try cwd.statFile(oracleFileName)).size;
|
||||||
const oracleFile = try cwd.readFileAlloc(allocator, oracleFileName, oracleFileSize);
|
const oracleFile = try cwd.readFileAlloc(allocator, oracleFileName, oracleFileSize);
|
||||||
const parsedJson = try json.parseFromSlice([]Card, allocator, oracleFile, .{ .ignore_unknown_fields = true });
|
const parsedJson = try json.parseFromSlice([]Card, allocator, oracleFile, .{ .ignore_unknown_fields = true });
|
||||||
|
@ -115,7 +118,6 @@ pub fn main() !void {
|
||||||
const cardName = line[indexOf(u8, line, " ").? + 1 .. indexOf(u8, line, "(").? - 1];
|
const cardName = line[indexOf(u8, line, " ").? + 1 .. indexOf(u8, line, "(").? - 1];
|
||||||
try cardNames.insert(cardName);
|
try cardNames.insert(cardName);
|
||||||
}
|
}
|
||||||
print("{d}\n", .{timer.read() / 1_000_000_000});
|
|
||||||
|
|
||||||
var cards = std.StringArrayHashMap(TextCard).init(allocator);
|
var cards = std.StringArrayHashMap(TextCard).init(allocator);
|
||||||
for (parsedJson.value) |*cardObj| {
|
for (parsedJson.value) |*cardObj| {
|
||||||
|
@ -139,9 +141,6 @@ pub fn main() !void {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
try cardRow.print(allocator, rowToPrint.items, &allPrinted);
|
try cardRow.print(allocator, rowToPrint.items, &allPrinted);
|
||||||
for (allPrinted.items) |printLine| {
|
|
||||||
print("{s}", .{printLine});
|
|
||||||
}
|
|
||||||
rowToPrint.clearAndFree();
|
rowToPrint.clearAndFree();
|
||||||
}
|
}
|
||||||
var page = c.pdf_append_page(pdf_doc);
|
var page = c.pdf_append_page(pdf_doc);
|
||||||
|
@ -177,25 +176,18 @@ fn card(
|
||||||
var finalOracleText: [30 * 100]u8 = undefined;
|
var finalOracleText: [30 * 100]u8 = undefined;
|
||||||
_ = std.mem.replace(u8, oracleBuf.items, cardObj.name, "~", &finalOracleText);
|
_ = std.mem.replace(u8, oracleBuf.items, cardObj.name, "~", &finalOracleText);
|
||||||
|
|
||||||
print("{s}\n", .{finalOracleText});
|
// print("{s}\n", .{finalOracleText});
|
||||||
|
|
||||||
if (cardObj.card_faces == null or cardObj.isFace) {
|
if (cardObj.card_faces == null or cardObj.isFace) {
|
||||||
|
|
||||||
try fullUnformattedText.appendSlice(try std.mem.concat(allocator, u8, &[_][]const u8{
|
try fullUnformattedText.appendSlice(try std.mem.concat(allocator, u8, &[_][]const u8{
|
||||||
cardObj.name,
|
cardObj.name,
|
||||||
if (cardObj.mana_cost.len > 0) " " else "",
|
if (cardObj.mana_cost.len > 0) " " else "",
|
||||||
cardObj.mana_cost,
|
cardObj.mana_cost,
|
||||||
" (",
|
try std.fmt.allocPrint(allocator, " ({s}) >> ", .{cardObj.type_line}),
|
||||||
cardObj.type_line,
|
|
||||||
") >> ",
|
|
||||||
&finalOracleText,
|
&finalOracleText,
|
||||||
if (cardObj.power) |_| " (" else "",
|
if(cardObj.power) |_| try std.fmt.allocPrint(allocator, "({s}/{s})", .{cardObj.power.?, cardObj.toughness.?}) else "",
|
||||||
cardObj.power orelse "",
|
if(cardObj.loyalty) |_| try std.fmt.allocPrint(allocator, "[{s}]", .{cardObj.loyalty.?}) else ""
|
||||||
if (cardObj.power) |_| "/" else "",
|
|
||||||
cardObj.toughness orelse "",
|
|
||||||
if (cardObj.power) |_| ") " else "",
|
|
||||||
if(cardObj.loyalty) |_| "[" else "",
|
|
||||||
cardObj.loyalty orelse "",
|
|
||||||
if(cardObj.loyalty) |_| "]" else "",
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -220,8 +212,8 @@ fn card(
|
||||||
if(word.len > 0) {
|
if(word.len > 0) {
|
||||||
try line.appendSlice(word);
|
try line.appendSlice(word);
|
||||||
try line.append(' ');
|
try line.append(' ');
|
||||||
print("{any}\n", .{word});
|
// print("{any}\n", .{word});
|
||||||
print("{s}\n", .{line.items});
|
// print("{s}\n", .{line.items});
|
||||||
assert(line.items.len < 30);
|
assert(line.items.len < 30);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -238,50 +230,39 @@ fn card(
|
||||||
}
|
}
|
||||||
|
|
||||||
const linesList = std.MultiArrayList(cardRow);
|
const linesList = std.MultiArrayList(cardRow);
|
||||||
|
|
||||||
|
fn optionalAccess(slice: anytype, index: usize) []const u8 {
|
||||||
|
if(slice.len > index) return slice[index];
|
||||||
|
return "";
|
||||||
|
}
|
||||||
const cardRow = struct {
|
const cardRow = struct {
|
||||||
first: []const u8 = spacer,
|
|
||||||
second: []const u8 = spacer,
|
|
||||||
third: []const u8 = spacer,
|
|
||||||
last: []const u8 = "\n",
|
|
||||||
fn print(allocator: std.mem.Allocator, cards: []TextCard, allPrinted: *std.ArrayList([]const u8)) !void {
|
fn print(allocator: std.mem.Allocator, cards: []TextCard, allPrinted: *std.ArrayList([]const u8)) !void {
|
||||||
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
|
var lines = std.ArrayList([]const u8).init(allocator);
|
||||||
|
|
||||||
var lines = linesList{};
|
const endIndex = if(cards.len > 1) std.mem.max(u64, &.{
|
||||||
defer lines.deinit(gpa.allocator());
|
cards[0].lines.len,
|
||||||
const dwd = try DisplayWidth.DisplayWidthData.init(allocator);
|
cards[1].lines.len,
|
||||||
const dw = DisplayWidth{ .data = &dwd };
|
cards[2].lines.len
|
||||||
|
}) else cards[0].lines.len - 1;
|
||||||
|
|
||||||
for (cards, 0..) |cardObj, cardNo| {
|
for(0..endIndex) |idx| {
|
||||||
const cardText = cardObj.lines;
|
try lines.append(
|
||||||
for (cardText, 0..) |line, idx| {
|
if(cards.len > 1)
|
||||||
const strippedLine = std.mem.trimRight(u8, line, " ");
|
try std.fmt.allocPrint(allocator, lineFormatter ** 3 ++ "\n", .{
|
||||||
const paddedLine = try std.fmt.allocPrint(gpa.allocator(), lineFormatter, .{strippedLine});
|
optionalAccess(cards[0].lines, idx),
|
||||||
assert(dw.strWidth(paddedLine) == dw.strWidth(spacer));
|
optionalAccess(cards[1].lines, idx),
|
||||||
const placeholder = if (idx < lines.items(.first).len) lines.get(idx) else cardRow{};
|
optionalAccess(cards[2].lines, idx)
|
||||||
const new: cardRow = switch (cardNo) {
|
})
|
||||||
0 => .{ .first = paddedLine },
|
else cards[0].lines[idx]);
|
||||||
1 => .{ .first = placeholder.first, .second = paddedLine },
|
|
||||||
2 => .{ .first = placeholder.first, .second = placeholder.second, .third = paddedLine },
|
|
||||||
else => unreachable,
|
|
||||||
};
|
|
||||||
if (idx < lines.items(.first).len) {
|
|
||||||
lines.set(idx, new);
|
|
||||||
} else {
|
|
||||||
try lines.append(gpa.allocator(), new);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
const rowHeight = lines.items.len;
|
||||||
const rowHeight = lines.items(.first).len;
|
|
||||||
while (pageHeight - (allPrinted.items.len % pageHeight) <= rowHeight) {
|
while (pageHeight - (allPrinted.items.len % pageHeight) <= rowHeight) {
|
||||||
assert(rowHeight <= pageHeight);
|
assert(rowHeight <= pageHeight);
|
||||||
try allPrinted.append(fullWidthSpacer);
|
try allPrinted.append(fullWidthSpacer);
|
||||||
}
|
}
|
||||||
for (lines.items(.first), 0..) |_, idx| {
|
for (lines.items) |line| {
|
||||||
const line = lines.get(idx);
|
try allPrinted.append(line);
|
||||||
const fullLine = try std.mem.concat(gpa.allocator(), u8, &[_][]const u8{ line.first, line.second, line.third, line.last });
|
|
||||||
assert(dw.strWidth(fullLine) == dw.strWidth(fullWidthSpacer));
|
|
||||||
try allPrinted.append(fullLine);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue