forked from magefree/mage
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgen-list-unimplemented-cards-for-set.pl
executable file
·131 lines (106 loc) · 3.06 KB
/
gen-list-unimplemented-cards-for-set.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/usr/bin/perl -w
#author: North
use strict;
use Scalar::Util qw(looks_like_number);
my $dataFile = "mtg-cards-data.txt";
my $setsFile = "mtg-sets-data.txt";
my $knownSetsFile = "known-sets.txt";
my %sets;
my %knownSets;
my @setCards;
open (DATA, $knownSetsFile) || die "can't open $knownSetsFile";
while(my $line = <DATA>) {
my @data = split('\\|', $line);
$knownSets{$data[0]} = $data[1];
#print ("$data[0] ===> $data[1]\n");
}
close(DATA);
# gets the set name
my $setName = $ARGV[0];
if(!$setName) {
print 'Enter a set name: ';
$setName = <STDIN>;
chomp $setName;
$setName = $setName;
}
while (!defined ($knownSets{$setName}))
{
print ("Invalid set - '$setName'\n");
print (" Possible sets you meant:\n");
my $origSetName = $setName;
$setName =~ s/^(.).*/$1/;
my $key;
foreach $key (sort keys (%knownSets))
{
if ($key =~ m/^$setName/img)
{
print (" '$key'\n");
}
}
print 'Enter a set name: ';
$setName = <STDIN>;
$setName = $setName;
chomp $setName;
}
open (DATA, $dataFile) || die "can't open $dataFile";
while(my $line = <DATA>) {
my @data = split('\\|', $line);
if ($data[1] eq $setName) {
push(@setCards, \@data);
}
}
close(DATA);
open (DATA, $setsFile) || die "can't open $setsFile";
while(my $line = <DATA>) {
my @data = split('\\|', $line);
$sets{$data[0]}= $data[1];
}
close(DATA);
sub cardSort {
if (!looks_like_number(@{$a}[2])) { return -1; }
if (!looks_like_number(@{$b}[2])) { return 1; }
if (@{$a}[2] < @{$b}[2]) { return -1; }
elsif (@{$a}[2] == @{$b}[2]) { return 0;}
elsif (@{$a}[2] > @{$b}[2]) { return 1; }
}
sub toCamelCase {
my $string = $_[0];
$string =~ s/\b([\w']+)\b/ucfirst($1)/ge;
$string =~ s/[-,\s\']//g;
$string;
}
# TODO: check for basic lands with ending 1,2,3,4,5 ...
my %cardNames;
my $toPrint = '';
foreach my $card (sort cardSort @setCards) {
my $className = toCamelCase(@{$card}[0]);
$cardNames {@{$card}[0]} = 1;
my $currentFileName = "../Mage.Sets/src/mage/sets/" . $knownSets{$setName} . "/" . $className . ".java";
if(! -e $currentFileName) {
$cardNames {@{$card}[0]} = 0;
if ($toPrint) {
$toPrint .= "\n";
}
$toPrint .= "@{$card}[2]|@{$card}[0]";
}
}
open CARD, "> " . lc($sets{$setName}) ."_unimplemented.txt";
print CARD $toPrint;
close CARD;
print ("Unimplemented cards are here: " . lc($sets{$setName}) ."_unimplemented.txt\n");
open ISSUE_TRACKER, "> " . lc($sets{$setName}) ."_issue_tracker.txt";
print ISSUE_TRACKER "# Cards in set:\n- [x] [Example Card Name] (example URL here)\n";
my $cn;
foreach $cn (sort keys (%cardNames))
{
my $x_or_not = "[ ]";
if ($cardNames {$cn} == 1)
{
$x_or_not = "[x]";
}
my $cn2 = $cn;
$cn2 =~ s/ /+/g;
print ISSUE_TRACKER "- $x_or_not [$cn] (https://www.google.com.au/search?q=$cn2+MTG&tbm=isch)\n";
}
close ISSUE_TRACKER;
print ("Tracking Issue text for a new Github issue (similar to https://github.com/magefree/mage/issues/2215): " . lc($sets{$setName}) ."_issue_tracker.txt\n");