mlb_gameday 0.0.11 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +19 -0
- data/Rakefile +6 -1
- data/lib/mlb_gameday.rb +139 -145
- data/lib/mlb_gameday/batter.rb +2 -2
- data/lib/mlb_gameday/division.rb +9 -18
- data/lib/mlb_gameday/game.rb +216 -225
- data/lib/mlb_gameday/league.rb +11 -17
- data/lib/mlb_gameday/pitcher.rb +33 -42
- data/lib/mlb_gameday/player.rb +17 -14
- data/lib/mlb_gameday/team.rb +17 -37
- data/lib/mlb_gameday/version.rb +1 -1
- data/mlb_gameday.gemspec +18 -16
- data/resources/data.yml +66 -0
- data/spec/basic_spec.rb +38 -38
- data/spec/game_spec.rb +44 -44
- data/spec/spec_helper.rb +0 -3
- metadata +39 -24
data/lib/mlb_gameday/league.rb
CHANGED
@@ -1,22 +1,16 @@
|
|
1
1
|
module MLBGameday
|
2
|
-
|
3
|
-
|
4
|
-
@name = name
|
5
|
-
@divisions = divisions
|
6
|
-
end
|
2
|
+
class League
|
3
|
+
attr_reader :name, :divisions
|
7
4
|
|
8
|
-
|
9
|
-
|
10
|
-
|
5
|
+
def initialize(name, divisions)
|
6
|
+
@name = name
|
7
|
+
@divisions = divisions
|
8
|
+
end
|
11
9
|
|
12
|
-
|
13
|
-
|
14
|
-
end
|
10
|
+
def division(name)
|
11
|
+
fail 'Invalid division' unless %i(East Central West).include?(name)
|
15
12
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
@divisions[name]
|
20
|
-
end
|
21
|
-
end
|
13
|
+
@divisions[name]
|
14
|
+
end
|
15
|
+
end
|
22
16
|
end
|
data/lib/mlb_gameday/pitcher.rb
CHANGED
@@ -1,44 +1,35 @@
|
|
1
1
|
module MLBGameday
|
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
|
-
def walks
|
36
|
-
xpath("//Player/season/@bb")
|
37
|
-
end
|
38
|
-
|
39
|
-
# Returns a Nokogiri::XML object
|
40
|
-
def data
|
41
|
-
@data
|
42
|
-
end
|
43
|
-
end
|
2
|
+
class Pitcher < Player
|
3
|
+
def era
|
4
|
+
@data.xpath('//Player/season/@era').text.to_f
|
5
|
+
end
|
6
|
+
|
7
|
+
def wins
|
8
|
+
@data.xpath('//Player/season/@w').text.to_i
|
9
|
+
end
|
10
|
+
|
11
|
+
def losses
|
12
|
+
@data.xpath('//Player/season/@l').text.to_i
|
13
|
+
end
|
14
|
+
|
15
|
+
def innings
|
16
|
+
@data.xpath('//Player/season/@ip').text.to_f
|
17
|
+
end
|
18
|
+
|
19
|
+
def saves
|
20
|
+
@data.xpath('//Player/season/@sv').text.to_i
|
21
|
+
end
|
22
|
+
|
23
|
+
def whip
|
24
|
+
@data.xpath('//Player/season/@whip').text.to_f
|
25
|
+
end
|
26
|
+
|
27
|
+
def strikeouts
|
28
|
+
@data.xpath('//Player/season/@so').text.to_i
|
29
|
+
end
|
30
|
+
|
31
|
+
def walks
|
32
|
+
@data.xpath('//Player/season/@bb').text.to_i
|
33
|
+
end
|
34
|
+
end
|
44
35
|
end
|
data/lib/mlb_gameday/player.rb
CHANGED
@@ -1,19 +1,22 @@
|
|
1
1
|
module MLBGameday
|
2
|
-
|
3
|
-
|
4
|
-
@api = api
|
5
|
-
@id = id
|
6
|
-
@data = data
|
7
|
-
end
|
2
|
+
class Player
|
3
|
+
attr_reader :id, :data
|
8
4
|
|
9
|
-
|
10
|
-
|
11
|
-
|
5
|
+
def initialize(id:, xml:)
|
6
|
+
@id = id
|
7
|
+
@data = xml
|
8
|
+
end
|
12
9
|
|
13
|
-
|
10
|
+
def first_name
|
11
|
+
@data.xpath('//Player//@first_name').text
|
12
|
+
end
|
14
13
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
14
|
+
def last_name
|
15
|
+
@data.xpath('//Player//@last_name').text
|
16
|
+
end
|
17
|
+
|
18
|
+
def name
|
19
|
+
"#{first_name} #{last_name}"
|
20
|
+
end
|
21
|
+
end
|
19
22
|
end
|
data/lib/mlb_gameday/team.rb
CHANGED
@@ -1,41 +1,21 @@
|
|
1
1
|
module MLBGameday
|
2
|
-
|
3
|
-
|
4
|
-
@name = opts[:name]
|
5
|
-
@city = opts[:city]
|
6
|
-
@league = opts[:league]
|
7
|
-
@division = opts[:division]
|
8
|
-
@names = opts[:names]
|
9
|
-
@code = opts[:code]
|
10
|
-
end
|
2
|
+
class Team
|
3
|
+
attr_reader :id, :name, :city, :league, :division, :names, :code, :file_code
|
11
4
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
5
|
+
def initialize(opts = {})
|
6
|
+
@id = opts[:id]
|
7
|
+
@name = opts[:name]
|
8
|
+
@city = opts[:city]
|
9
|
+
@league = opts[:league]
|
10
|
+
@division = opts[:division]
|
11
|
+
@names = opts[:names]
|
12
|
+
@code = opts[:code]
|
13
|
+
@file_code = opts[:file_code]
|
14
|
+
end
|
16
15
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
@city
|
23
|
-
end
|
24
|
-
|
25
|
-
def league
|
26
|
-
@league
|
27
|
-
end
|
28
|
-
|
29
|
-
def division
|
30
|
-
@division
|
31
|
-
end
|
32
|
-
|
33
|
-
def names
|
34
|
-
@names
|
35
|
-
end
|
36
|
-
|
37
|
-
def code
|
38
|
-
@code
|
39
|
-
end
|
40
|
-
end
|
16
|
+
# So we don't get huge printouts
|
17
|
+
def inspect
|
18
|
+
%(#<MLBGameday::Team @name="#{@name}">)
|
19
|
+
end
|
20
|
+
end
|
41
21
|
end
|
data/lib/mlb_gameday/version.rb
CHANGED
data/mlb_gameday.gemspec
CHANGED
@@ -4,24 +4,26 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'mlb_gameday/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'mlb_gameday'
|
8
8
|
spec.version = MLBGameday::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
11
|
-
spec.description =
|
12
|
-
|
13
|
-
spec.
|
14
|
-
spec.
|
9
|
+
spec.authors = ['Steven Hoffman']
|
10
|
+
spec.email = ['git@fustrate.com']
|
11
|
+
spec.description = 'Access data about games and players from the ' \
|
12
|
+
'official MLB Gameday API'
|
13
|
+
spec.summary = %(Fetches gameday data from the MLB Gameday API)
|
14
|
+
spec.homepage = 'http://github.com/fustrate/mlb_gameday'
|
15
|
+
spec.license = 'MIT'
|
15
16
|
|
16
|
-
spec.files = `git ls-files`.split(
|
17
|
-
spec.executables = spec.files.grep(
|
18
|
-
spec.test_files = spec.files.grep(
|
19
|
-
spec.require_paths =
|
17
|
+
spec.files = `git ls-files`.split($RS)
|
18
|
+
spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
|
19
|
+
spec.test_files = spec.files.grep(/^(test|spec|features)\//)
|
20
|
+
spec.require_paths = %w(lib)
|
20
21
|
|
21
|
-
spec.add_development_dependency
|
22
|
-
spec.add_development_dependency
|
23
|
-
spec.add_development_dependency
|
22
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
23
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
24
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
24
25
|
|
25
|
-
spec.add_dependency
|
26
|
-
spec.add_dependency
|
26
|
+
spec.add_dependency 'httparty', '~> 0.13'
|
27
|
+
spec.add_dependency 'nokogiri', '~> 1.6'
|
28
|
+
spec.add_dependency 'chronic', '~> 0.10'
|
27
29
|
end
|
data/resources/data.yml
CHANGED
@@ -5,6 +5,7 @@
|
|
5
5
|
:East: &aleast !ruby/object:MLBGameday::Division
|
6
6
|
name: East
|
7
7
|
league: *al
|
8
|
+
id: 201
|
8
9
|
teams:
|
9
10
|
:BAL: !ruby/object:MLBGameday::Team
|
10
11
|
name: Orioles
|
@@ -12,6 +13,8 @@
|
|
12
13
|
league: *al
|
13
14
|
division: *aleast
|
14
15
|
code: BAL
|
16
|
+
file_code: bal
|
17
|
+
id: 110
|
15
18
|
names:
|
16
19
|
- bal
|
17
20
|
- orioles
|
@@ -23,6 +26,8 @@
|
|
23
26
|
league: *al
|
24
27
|
division: *aleast
|
25
28
|
code: BOS
|
29
|
+
file_code: bos
|
30
|
+
id: 111
|
26
31
|
names:
|
27
32
|
- bos
|
28
33
|
- red sox
|
@@ -35,6 +40,8 @@
|
|
35
40
|
league: *al
|
36
41
|
division: *aleast
|
37
42
|
code: NYY
|
43
|
+
file_code: nyy
|
44
|
+
id: 147
|
38
45
|
names:
|
39
46
|
- nyy
|
40
47
|
- yankees
|
@@ -47,6 +54,8 @@
|
|
47
54
|
league: *al
|
48
55
|
division: *aleast
|
49
56
|
code: TB
|
57
|
+
file_code: tb
|
58
|
+
id: 139
|
50
59
|
names:
|
51
60
|
- tb
|
52
61
|
- rays
|
@@ -61,6 +70,8 @@
|
|
61
70
|
league: *al
|
62
71
|
division: *aleast
|
63
72
|
code: TOR
|
73
|
+
file_code: tor
|
74
|
+
id: 141
|
64
75
|
names:
|
65
76
|
- tor
|
66
77
|
- blue jays
|
@@ -73,6 +84,7 @@
|
|
73
84
|
:Central: &alcentral !ruby/object:MLBGameday::Division
|
74
85
|
name: Central
|
75
86
|
league: *al
|
87
|
+
id: 202
|
76
88
|
teams:
|
77
89
|
:CLE: !ruby/object:MLBGameday::Team
|
78
90
|
name: Indians
|
@@ -80,6 +92,8 @@
|
|
80
92
|
league: *al
|
81
93
|
division: *alcentral
|
82
94
|
code: CLE
|
95
|
+
file_code: cle
|
96
|
+
id: 114
|
83
97
|
names:
|
84
98
|
- cle
|
85
99
|
- indians
|
@@ -91,6 +105,8 @@
|
|
91
105
|
league: *al
|
92
106
|
division: *alcentral
|
93
107
|
code: CWS
|
108
|
+
file_code: cws
|
109
|
+
id: 145
|
94
110
|
names:
|
95
111
|
- cws
|
96
112
|
- white sox
|
@@ -101,6 +117,8 @@
|
|
101
117
|
league: *al
|
102
118
|
division: *alcentral
|
103
119
|
code: DET
|
120
|
+
file_code: det
|
121
|
+
id: 116
|
104
122
|
names:
|
105
123
|
- det
|
106
124
|
- tigers
|
@@ -112,6 +130,8 @@
|
|
112
130
|
league: *al
|
113
131
|
division: *alcentral
|
114
132
|
code: KC
|
133
|
+
file_code: kc
|
134
|
+
id: 118
|
115
135
|
names:
|
116
136
|
- kc
|
117
137
|
- royals
|
@@ -124,6 +144,8 @@
|
|
124
144
|
league: *al
|
125
145
|
division: *alcentral
|
126
146
|
code: MIN
|
147
|
+
file_code: min
|
148
|
+
id: 142
|
127
149
|
names:
|
128
150
|
- min
|
129
151
|
- twins
|
@@ -132,6 +154,7 @@
|
|
132
154
|
:West: &alwest !ruby/object:MLBGameday::Division
|
133
155
|
name: West
|
134
156
|
league: *al
|
157
|
+
id: 200
|
135
158
|
teams:
|
136
159
|
:LAA: !ruby/object:MLBGameday::Team
|
137
160
|
name: Angels
|
@@ -139,6 +162,8 @@
|
|
139
162
|
league: *al
|
140
163
|
division: *alwest
|
141
164
|
code: LAA
|
165
|
+
file_code: ana
|
166
|
+
id: 108
|
142
167
|
names:
|
143
168
|
- ana
|
144
169
|
- angels
|
@@ -158,6 +183,8 @@
|
|
158
183
|
league: *al
|
159
184
|
division: *alwest
|
160
185
|
code: HOU
|
186
|
+
file_code: hou
|
187
|
+
id: 117
|
161
188
|
names:
|
162
189
|
- hou
|
163
190
|
- astros
|
@@ -169,6 +196,8 @@
|
|
169
196
|
league: *al
|
170
197
|
division: *alwest
|
171
198
|
code: OAK
|
199
|
+
file_code: oak
|
200
|
+
id: 133
|
172
201
|
names:
|
173
202
|
- oak
|
174
203
|
- athletics
|
@@ -181,6 +210,8 @@
|
|
181
210
|
league: *al
|
182
211
|
division: *alwest
|
183
212
|
code: SEA
|
213
|
+
file_code: sea
|
214
|
+
id: 136
|
184
215
|
names:
|
185
216
|
- sea
|
186
217
|
- mariners
|
@@ -192,6 +223,8 @@
|
|
192
223
|
league: *al
|
193
224
|
division: *alwest
|
194
225
|
code: TEX
|
226
|
+
file_code: tex
|
227
|
+
id: 140
|
195
228
|
names:
|
196
229
|
- tex
|
197
230
|
- rangers
|
@@ -203,6 +236,7 @@
|
|
203
236
|
:East: &nleast !ruby/object:MLBGameday::Division
|
204
237
|
name: East
|
205
238
|
league: *nl
|
239
|
+
id: 204
|
206
240
|
teams:
|
207
241
|
:ATL: !ruby/object:MLBGameday::Team
|
208
242
|
name: Braves
|
@@ -210,6 +244,8 @@
|
|
210
244
|
league: *nl
|
211
245
|
division: *nleast
|
212
246
|
code: ATL
|
247
|
+
file_code: atl
|
248
|
+
id: 144
|
213
249
|
names:
|
214
250
|
- atl
|
215
251
|
- braves
|
@@ -221,6 +257,8 @@
|
|
221
257
|
league: *nl
|
222
258
|
division: *nleast
|
223
259
|
code: MIA
|
260
|
+
file_code: mia
|
261
|
+
id: 146
|
224
262
|
names:
|
225
263
|
- mia
|
226
264
|
- marlins
|
@@ -233,6 +271,8 @@
|
|
233
271
|
league: *nl
|
234
272
|
division: *nleast
|
235
273
|
code: NYM
|
274
|
+
file_code: nym
|
275
|
+
id: 121
|
236
276
|
names:
|
237
277
|
- nym
|
238
278
|
- mets
|
@@ -245,6 +285,8 @@
|
|
245
285
|
league: *nl
|
246
286
|
division: *nleast
|
247
287
|
code: PHI
|
288
|
+
file_code: phi
|
289
|
+
id: 143
|
248
290
|
names:
|
249
291
|
- phi
|
250
292
|
- phillies
|
@@ -257,6 +299,8 @@
|
|
257
299
|
league: *nl
|
258
300
|
division: *nleast
|
259
301
|
code: WSH
|
302
|
+
file_code: wsh
|
303
|
+
id: 120
|
260
304
|
names:
|
261
305
|
- wsh
|
262
306
|
- nationals
|
@@ -266,6 +310,7 @@
|
|
266
310
|
:Central: &nlcentral !ruby/object:MLBGameday::Division
|
267
311
|
name: Central
|
268
312
|
league: *nl
|
313
|
+
id: 205
|
269
314
|
teams:
|
270
315
|
:CHC: !ruby/object:MLBGameday::Team
|
271
316
|
name: Cubs
|
@@ -273,6 +318,8 @@
|
|
273
318
|
league: *nl
|
274
319
|
division: *nlcentral
|
275
320
|
code: CHC
|
321
|
+
file_code: chc
|
322
|
+
id: 112
|
276
323
|
names:
|
277
324
|
- chc
|
278
325
|
- cubs
|
@@ -285,6 +332,8 @@
|
|
285
332
|
league: *nl
|
286
333
|
division: *nlcentral
|
287
334
|
code: CIN
|
335
|
+
file_code: cin
|
336
|
+
id: 113
|
288
337
|
names:
|
289
338
|
- cin
|
290
339
|
- reds
|
@@ -296,6 +345,8 @@
|
|
296
345
|
league: *nl
|
297
346
|
division: *nlcentral
|
298
347
|
code: MIL
|
348
|
+
file_code: mil
|
349
|
+
id: 158
|
299
350
|
names:
|
300
351
|
- mil
|
301
352
|
- brewers
|
@@ -307,6 +358,8 @@
|
|
307
358
|
league: *nl
|
308
359
|
division: *nlcentral
|
309
360
|
code: PIT
|
361
|
+
file_code: pit
|
362
|
+
id: 134
|
310
363
|
names:
|
311
364
|
- pit
|
312
365
|
- pirates
|
@@ -320,6 +373,8 @@
|
|
320
373
|
league: *nl
|
321
374
|
division: *nlcentral
|
322
375
|
code: STL
|
376
|
+
file_code: stl
|
377
|
+
id: 138
|
323
378
|
names:
|
324
379
|
- stl
|
325
380
|
- cardinals
|
@@ -329,6 +384,7 @@
|
|
329
384
|
:West: &nlwest !ruby/object:MLBGameday::Division
|
330
385
|
name: West
|
331
386
|
league: *nl
|
387
|
+
id: 203
|
332
388
|
teams:
|
333
389
|
:ARI: !ruby/object:MLBGameday::Team
|
334
390
|
name: Diamondbacks
|
@@ -336,6 +392,8 @@
|
|
336
392
|
league: *nl
|
337
393
|
division: *nlwest
|
338
394
|
code: ARI
|
395
|
+
file_code: ari
|
396
|
+
id: 109
|
339
397
|
names:
|
340
398
|
- ari
|
341
399
|
- diamondbacks
|
@@ -350,6 +408,8 @@
|
|
350
408
|
league: *nl
|
351
409
|
division: *nlwest
|
352
410
|
code: COL
|
411
|
+
file_code: col
|
412
|
+
id: 115
|
353
413
|
names:
|
354
414
|
- col
|
355
415
|
- rockies
|
@@ -361,6 +421,8 @@
|
|
361
421
|
league: *nl
|
362
422
|
division: *nlwest
|
363
423
|
code: LAD
|
424
|
+
file_code: la
|
425
|
+
id: 119
|
364
426
|
names:
|
365
427
|
- lad
|
366
428
|
- dodgers
|
@@ -377,6 +439,8 @@
|
|
377
439
|
league: *nl
|
378
440
|
division: *nlwest
|
379
441
|
code: SD
|
442
|
+
file_code: sd
|
443
|
+
id: 135
|
380
444
|
names:
|
381
445
|
- sd
|
382
446
|
- padres
|
@@ -388,6 +452,8 @@
|
|
388
452
|
league: *nl
|
389
453
|
division: *nlwest
|
390
454
|
code: SF
|
455
|
+
file_code: sf
|
456
|
+
id: 137
|
391
457
|
names:
|
392
458
|
- sf
|
393
459
|
- giants
|