mlb_gameday 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7b5e9fe24c12666b733a78d3d2095fbb9c27ef21
4
- data.tar.gz: cc3b59210895a3b378e61a1e11a4a1b2fa1e3a76
3
+ metadata.gz: 6299f9b1205eaae985a66b13126e039e155a65c0
4
+ data.tar.gz: a6e7728f34e670cf8622430443126ee51049ed0d
5
5
  SHA512:
6
- metadata.gz: ea269b35e30cd564fd0ccf6db6e44c2ae4a5d1ba990c7da1bc0c8efbac8a1b64366034c6f13a25d3bf56a08f2975da9033891c144c476851bbc89b7707f97738
7
- data.tar.gz: b5c44b9f422d240c558cba09d205aa0c21688e1bcad3de246a2f8eb5863f952a8866f402dee3077b41b4a66172bf8f5d210b05787ab20d41e654f1d65365fc44
6
+ metadata.gz: 5d68b8ba4599172fd4a5778bf3b905a3ed9bfb7cb74159a112fe7b4810ade98c3e15dfe750662e028292d822b7c4d43df8a400e30c6f81f0e7f99e6d61c8485a
7
+ data.tar.gz: 696090f7753d5611090a935709c12d3263c6cb889fd1a23db33127057ac9734d6b1eb0c82801308a909c34252c83e061ffe20c607311c57c78f89deaa3c66ed0
data/README.md CHANGED
@@ -18,7 +18,8 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- TODO: Write usage instructions here
21
+ `require 'mlb_gameday' #=> true`
22
+ `gd2 = MLBGameday::API.new`
22
23
 
23
24
  ## Contributing
24
25
 
data/lib/mlb_gameday.rb CHANGED
@@ -34,13 +34,11 @@ module MLBGameday
34
34
  end
35
35
 
36
36
  def team(name)
37
- return name if name.is_a? MLBGameday::Team
38
-
39
- teams.each do |team|
40
- return team if team.names.include? name.downcase
37
+ if name.is_a? MLBGameday::Team
38
+ name
39
+ else
40
+ teams.select { |team| team.is_called?(name) }.first
41
41
  end
42
-
43
- nil
44
42
  end
45
43
 
46
44
  def teams
@@ -149,6 +147,8 @@ module MLBGameday
149
147
 
150
148
  def fetch_xml(path, interpolations = {})
151
149
  Nokogiri::XML open format(API_URL + path + '.xml', interpolations)
150
+ rescue OpenURI::HTTPError
151
+ {}
152
152
  end
153
153
  end
154
154
  end
@@ -1,6 +1,6 @@
1
1
  module MLBGameday
2
2
  class Team
3
- attr_reader :id, :name, :city, :league, :division, :names, :code, :file_code
3
+ attr_reader :id, :name, :city, :league, :division, :code, :file_code
4
4
 
5
5
  def initialize(opts = {})
6
6
  @id = opts[:id]
@@ -8,14 +8,50 @@ module MLBGameday
8
8
  @city = opts[:city]
9
9
  @league = opts[:league]
10
10
  @division = opts[:division]
11
- @names = opts[:names]
11
+ @alt_names = opts[:alt_names]
12
12
  @code = opts[:code]
13
13
  @file_code = opts[:file_code]
14
14
  end
15
+
16
+ def full_name
17
+ "#{city} #{name}"
18
+ end
19
+
20
+ def names
21
+ @names ||= (implicit_names + alt_names).uniq
22
+ end
23
+
24
+ def is_called?(name)
25
+ names.include?(name.downcase)
26
+ end
15
27
 
16
28
  # So we don't get huge printouts
17
29
  def inspect
18
30
  %(#<MLBGameday::Team @name="#{@name}">)
19
31
  end
32
+
33
+ private
34
+ def alt_names
35
+ @alt_names ||= []
36
+ end
37
+
38
+ def implicit_names
39
+ result = strict_names + [code, singular_name, despaced_name].map(&:downcase)
40
+ result << city.downcase unless ["New York", "Chicago"].include?(city)
41
+
42
+ result.uniq
43
+ end
44
+
45
+ def strict_names
46
+ [name, full_name].map(&:downcase)
47
+ end
48
+
49
+ def singular_name
50
+ name.chomp('s')
51
+ end
52
+
53
+ def despaced_name
54
+ name.tr(' ', '')
55
+ end
20
56
  end
21
57
  end
@@ -1,3 +1,3 @@
1
1
  module MLBGameday
2
- VERSION = '0.1.3'
2
+ VERSION = '0.1.4'
3
3
  end
data/resources/data.yml CHANGED
@@ -15,11 +15,6 @@
15
15
  code: BAL
16
16
  file_code: bal
17
17
  id: 110
18
- names:
19
- - bal
20
- - orioles
21
- - oriole
22
- - baltimore
23
18
  :BOS: !ruby/object:MLBGameday::Team
24
19
  name: Red Sox
25
20
  city: Boston
@@ -28,11 +23,7 @@
28
23
  code: BOS
29
24
  file_code: bos
30
25
  id: 111
31
- names:
32
- - bos
33
- - red sox
34
- - redsox
35
- - boston
26
+ alt_names:
36
27
  - bosox
37
28
  :NYY: !ruby/object:MLBGameday::Team
38
29
  name: Yankees
@@ -42,11 +33,7 @@
42
33
  code: NYY
43
34
  file_code: nyy
44
35
  id: 147
45
- names:
46
- - nyy
47
- - yankees
48
- - yankee
49
- - new york yankees
36
+ alt_names:
50
37
  - new york yankee
51
38
  :TB: !ruby/object:MLBGameday::Team
52
39
  name: Rays
@@ -56,14 +43,10 @@
56
43
  code: TB
57
44
  file_code: tb
58
45
  id: 139
59
- names:
60
- - tb
61
- - rays
62
- - ray
46
+ alt_names:
63
47
  - devil rays
64
48
  - devil ray
65
49
  - tampa
66
- - tampa bay
67
50
  :TOR: !ruby/object:MLBGameday::Team
68
51
  name: Blue Jays
69
52
  city: Toronto
@@ -72,15 +55,10 @@
72
55
  code: TOR
73
56
  file_code: tor
74
57
  id: 141
75
- names:
76
- - tor
77
- - blue jays
78
- - blue jay
79
- - bluejays
58
+ alt_names:
80
59
  - bluejay
81
60
  - jays
82
61
  - jay
83
- - toronto
84
62
  :Central: &alcentral !ruby/object:MLBGameday::Division
85
63
  name: Central
86
64
  league: *al
@@ -94,11 +72,6 @@
94
72
  code: CLE
95
73
  file_code: cle
96
74
  id: 114
97
- names:
98
- - cle
99
- - indians
100
- - indian
101
- - cleveland
102
75
  :CWS: !ruby/object:MLBGameday::Team
103
76
  name: White Sox
104
77
  city: Chicago
@@ -107,10 +80,6 @@
107
80
  code: CWS
108
81
  file_code: cws
109
82
  id: 145
110
- names:
111
- - cws
112
- - white sox
113
- - chicago white sox
114
83
  :DET: !ruby/object:MLBGameday::Team
115
84
  name: Tigers
116
85
  city: Detroit
@@ -119,11 +88,6 @@
119
88
  code: DET
120
89
  file_code: det
121
90
  id: 116
122
- names:
123
- - det
124
- - tigers
125
- - tiger
126
- - detroit
127
91
  :KC: !ruby/object:MLBGameday::Team
128
92
  name: Royals
129
93
  city: Kansas City
@@ -132,11 +96,7 @@
132
96
  code: KC
133
97
  file_code: kc
134
98
  id: 118
135
- names:
136
- - kc
137
- - royals
138
- - royal
139
- - kansas city
99
+ alt_names:
140
100
  - kansas
141
101
  :MIN: !ruby/object:MLBGameday::Team
142
102
  name: Twins
@@ -146,11 +106,6 @@
146
106
  code: MIN
147
107
  file_code: min
148
108
  id: 142
149
- names:
150
- - min
151
- - twins
152
- - twin
153
- - minnesota
154
109
  :West: &alwest !ruby/object:MLBGameday::Division
155
110
  name: West
156
111
  league: *al
@@ -164,17 +119,12 @@
164
119
  code: LAA
165
120
  file_code: ana
166
121
  id: 108
167
- names:
168
- - ana
169
- - angels
170
- - angel
171
- - anaheim
122
+ alt_names:
172
123
  - ana
173
124
  - los angeles angel
174
125
  - los angeles angels
175
126
  - la angels
176
127
  - la angel
177
- - laa
178
128
  - laaa
179
129
  - los angeles angels of anaheim
180
130
  :HOU: !ruby/object:MLBGameday::Team
@@ -185,11 +135,6 @@
185
135
  code: HOU
186
136
  file_code: hou
187
137
  id: 117
188
- names:
189
- - hou
190
- - astros
191
- - astro
192
- - houston
193
138
  :OAK: !ruby/object:MLBGameday::Team
194
139
  name: Athletics
195
140
  city: Oakland
@@ -198,12 +143,8 @@
198
143
  code: OAK
199
144
  file_code: oak
200
145
  id: 133
201
- names:
202
- - oak
203
- - athletics
204
- - athletic
146
+ alt_names:
205
147
  - as
206
- - oakland
207
148
  :SEA: !ruby/object:MLBGameday::Team
208
149
  name: Mariners
209
150
  city: Seattle
@@ -212,11 +153,6 @@
212
153
  code: SEA
213
154
  file_code: sea
214
155
  id: 136
215
- names:
216
- - sea
217
- - mariners
218
- - mariner
219
- - seattle
220
156
  :TEX: !ruby/object:MLBGameday::Team
221
157
  name: Rangers
222
158
  city: Texas
@@ -225,11 +161,6 @@
225
161
  code: TEX
226
162
  file_code: tex
227
163
  id: 140
228
- names:
229
- - tex
230
- - rangers
231
- - ranger
232
- - texas
233
164
  :NL: &nl !ruby/object:MLBGameday::League
234
165
  name: National
235
166
  divisions:
@@ -246,11 +177,6 @@
246
177
  code: ATL
247
178
  file_code: atl
248
179
  id: 144
249
- names:
250
- - atl
251
- - braves
252
- - brave
253
- - atlanta
254
180
  :MIA: !ruby/object:MLBGameday::Team
255
181
  name: Marlins
256
182
  city: Miami
@@ -259,11 +185,7 @@
259
185
  code: MIA
260
186
  file_code: mia
261
187
  id: 146
262
- names:
263
- - mia
264
- - marlins
265
- - marlin
266
- - miami
188
+ alt_names:
267
189
  - florida
268
190
  :NYM: !ruby/object:MLBGameday::Team
269
191
  name: Mets
@@ -273,11 +195,7 @@
273
195
  code: NYM
274
196
  file_code: nym
275
197
  id: 121
276
- names:
277
- - nym
278
- - mets
279
- - met
280
- - new york mets
198
+ alt_names:
281
199
  - new york met
282
200
  :PHI: !ruby/object:MLBGameday::Team
283
201
  name: Phillies
@@ -287,12 +205,8 @@
287
205
  code: PHI
288
206
  file_code: phi
289
207
  id: 143
290
- names:
291
- - phi
292
- - phillies
293
- - phillie
208
+ alt_names:
294
209
  - philly
295
- - philadelphia
296
210
  :WSH: !ruby/object:MLBGameday::Team
297
211
  name: Nationals
298
212
  city: Washington
@@ -301,12 +215,8 @@
301
215
  code: WSH
302
216
  file_code: was
303
217
  id: 120
304
- names:
305
- - wsh
306
- - nationals
218
+ alt_names:
307
219
  - natinals
308
- - national
309
- - washington
310
220
  :Central: &nlcentral !ruby/object:MLBGameday::Division
311
221
  name: Central
312
222
  league: *nl
@@ -320,11 +230,7 @@
320
230
  code: CHC
321
231
  file_code: chc
322
232
  id: 112
323
- names:
324
- - chc
325
- - cubs
326
- - cub
327
- - chicago cubs
233
+ alt_names:
328
234
  - chicago cub
329
235
  :CIN: !ruby/object:MLBGameday::Team
330
236
  name: Reds
@@ -334,11 +240,6 @@
334
240
  code: CIN
335
241
  file_code: cin
336
242
  id: 113
337
- names:
338
- - cin
339
- - reds
340
- - red
341
- - cincinnati
342
243
  :MIL: !ruby/object:MLBGameday::Team
343
244
  name: Brewers
344
245
  city: Milwaukee
@@ -347,11 +248,6 @@
347
248
  code: MIL
348
249
  file_code: mil
349
250
  id: 158
350
- names:
351
- - mil
352
- - brewers
353
- - brewer
354
- - milwaukee
355
251
  :PIT: !ruby/object:MLBGameday::Team
356
252
  name: Pirates
357
253
  city: Pittsburgh
@@ -360,13 +256,9 @@
360
256
  code: PIT
361
257
  file_code: pit
362
258
  id: 134
363
- names:
364
- - pit
365
- - pirates
366
- - pirate
259
+ alt_names:
367
260
  - buccos
368
261
  - bucco
369
- - pittsburgh
370
262
  :STL: !ruby/object:MLBGameday::Team
371
263
  name: Cardinals
372
264
  city: St. Louis
@@ -375,12 +267,8 @@
375
267
  code: STL
376
268
  file_code: stl
377
269
  id: 138
378
- names:
379
- - stl
380
- - cardinals
381
- - cardinal
270
+ alt_names:
382
271
  - st louis
383
- - st. louis
384
272
  :West: &nlwest !ruby/object:MLBGameday::Division
385
273
  name: West
386
274
  league: *nl
@@ -394,13 +282,9 @@
394
282
  code: ARI
395
283
  file_code: ari
396
284
  id: 109
397
- names:
398
- - ari
399
- - diamondbacks
400
- - diamondback
285
+ alt_names:
401
286
  - dbacks
402
287
  - dback
403
- - arizona
404
288
  - az
405
289
  :COL: !ruby/object:MLBGameday::Team
406
290
  name: Rockies
@@ -410,11 +294,6 @@
410
294
  code: COL
411
295
  file_code: col
412
296
  id: 115
413
- names:
414
- - col
415
- - rockies
416
- - rockie
417
- - colorado
418
297
  :LAD: !ruby/object:MLBGameday::Team
419
298
  name: Dodgers
420
299
  city: Los Angeles
@@ -423,11 +302,7 @@
423
302
  code: LAD
424
303
  file_code: la
425
304
  id: 119
426
- names:
427
- - lad
428
- - dodgers
429
- - dodger
430
- - los angeles
305
+ alt_names:
431
306
  - la
432
307
  - los angeles dodgers
433
308
  - los angeles dodger
@@ -441,11 +316,6 @@
441
316
  code: SD
442
317
  file_code: sd
443
318
  id: 135
444
- names:
445
- - sd
446
- - padres
447
- - padre
448
- - san diego
449
319
  :SF: !ruby/object:MLBGameday::Team
450
320
  name: Giants
451
321
  city: San Francisco
@@ -454,10 +324,6 @@
454
324
  code: SF
455
325
  file_code: sf
456
326
  id: 137
457
- names:
458
- - sf
459
- - giants
460
- - giant
327
+ alt_names:
461
328
  - san fran
462
- - san francisco
463
329
  - gigantes
data/test/api_spec.rb CHANGED
@@ -30,6 +30,10 @@ class TestApi < MiniTest::Test
30
30
  assert_equal @api.team('Dodgers').city, 'Los Angeles'
31
31
  end
32
32
 
33
+ def test_name_search_for_nonexistent_returns_nil
34
+ assert_nil @api.team('Senators')
35
+ end
36
+
33
37
  def test_division_team_count
34
38
  assert_equal @api.team('Dodgers').division.teams.count, 5
35
39
  end
@@ -38,4 +42,56 @@ class TestApi < MiniTest::Test
38
42
  assert_equal @api.team('Astros').league.name, 'American'
39
43
  assert_equal @api.team('Astros').division.name, 'West'
40
44
  end
45
+
46
+ def test_names_includes_code
47
+ @api.teams.each do |team|
48
+ assert_includes team.names, team.code.downcase
49
+ end
50
+ end
51
+
52
+ def test_names_includes_name
53
+ @api.teams.each do |team|
54
+ assert_includes team.names, team.name.downcase
55
+ end
56
+ end
57
+
58
+ def test_names_includes_alt_names
59
+ @api.teams.each do |team|
60
+ team.send(:alt_names).each do |alt_name|
61
+ assert_includes team.names, alt_name.downcase
62
+ end
63
+ end
64
+ end
65
+
66
+ def test_names_include_singular_name_when_different_from_name
67
+ @api.teams.reject {|team| team.name == team.send(:singular_name)}.each do |team|
68
+ assert_includes team.names, team.send(:singular_name).downcase
69
+ end
70
+ end
71
+
72
+ def test_names_includes_despaced_name_when_name_is_multi_word
73
+ @api.teams.select {|team| team.name.split.size > 1}.each do |team|
74
+ assert_includes team.names, team.send(:despaced_name).downcase
75
+ end
76
+ end
77
+
78
+ def test_names_includes_city_except_nyc_and_chicago
79
+ @api.teams.reject {|team| ["New York", "Chicago"].include?(team.city)}.each do |team|
80
+ assert_includes team.names, team.city.downcase
81
+ end
82
+ end
83
+
84
+ def test_names_does_not_include_city_for_nyc_and_chicago
85
+ @api.teams.select {|team| ["New York", "Chicago"].include?(team.city)}.each do |team|
86
+ refute_includes team.names, team.city.downcase
87
+ end
88
+ end
89
+
90
+ def test_no_teams_share_any_names
91
+ @api.teams.each do |team|
92
+ @api.teams.select {|t| t != team}.each do |other_team|
93
+ assert_equal (team.names - other_team.names), team.names
94
+ end
95
+ end
96
+ end
41
97
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mlb_gameday
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steven Hoffman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-08 00:00:00.000000000 Z
11
+ date: 2016-03-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -241,7 +241,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
241
241
  version: '0'
242
242
  requirements: []
243
243
  rubyforge_project:
244
- rubygems_version: 2.4.5
244
+ rubygems_version: 2.5.1
245
245
  signing_key:
246
246
  specification_version: 4
247
247
  summary: Fetches gameday data from the MLB Gameday API