sportdb-readers 1.1.1 → 1.2.0

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
- SHA1:
3
- metadata.gz: d51d795ec384d281363b3af32bb6560bb0e7707a
4
- data.tar.gz: 6579ab0a20f45673f24ae4b444bc01d5c0f43d19
2
+ SHA256:
3
+ metadata.gz: 40a0db453b48c9bed47b6370c44249d5c8197df2fddc90a911653f2ddd145357
4
+ data.tar.gz: 8792558c03345ba1662249e5239f5b6122324740f353be4143c420f482486742
5
5
  SHA512:
6
- metadata.gz: 5b5ca27813390ab7fe3aa41e63897bbd0aa03c39d78dabed8a321eb3853528a2c1700c8dea4be57fe7fd3eb6122631878bdfb2beeed03ac81e545b4c9049dd4f
7
- data.tar.gz: 5c2a40f3fd42a0ec3eac82e942088a00bd2e7a6bf4bd07a2d993d217ac2b17a3503ac41d7befd1016a90511ded5c8ea2d4df7a577bbd1ec3dd994f84c4ea1113
6
+ metadata.gz: 342de18d45ec3be01a528be68e2e77d18866911cef7fbad17424179c648eda816170e77ea39987bfa66b48af9627284080535eab292c0e9798e3ca25ad09118a
7
+ data.tar.gz: 5861f675107c90fdd10f865396df5b43f30df1df63ff3e437f409612853b393d575f96df0b59a86d23c2773791a2a63d57db1df9949ebb4e0845768b088a9654
data/CHANGELOG.md CHANGED
@@ -1,3 +1,5 @@
1
+ ### 1.2.0
2
+
1
3
  ### 0.0.1 / 2019-10-29
2
4
 
3
5
  * Everything is new. First release.
data/Manifest.txt CHANGED
@@ -8,12 +8,3 @@ lib/sportdb/readers/conf_reader.rb
8
8
  lib/sportdb/readers/match_reader.rb
9
9
  lib/sportdb/readers/package.rb
10
10
  lib/sportdb/readers/version.rb
11
- test/helper.rb
12
- test/test_conf_reader.rb
13
- test/test_match_reader_champs.rb
14
- test/test_match_reader_eng.rb
15
- test/test_match_reader_euro.rb
16
- test/test_match_reader_mu.rb
17
- test/test_read.rb
18
- test/test_reader.rb
19
- test/test_reader_champs.rb
data/README.md CHANGED
@@ -5,7 +5,6 @@
5
5
  * bugs :: [github.com/sportdb/sport.db/issues](https://github.com/sportdb/sport.db/issues)
6
6
  * gem :: [rubygems.org/gems/sportdb-readers](https://rubygems.org/gems/sportdb-readers)
7
7
  * rdoc :: [rubydoc.info/gems/sportdb-readers](http://rubydoc.info/gems/sportdb-readers)
8
- * forum :: [opensport](http://groups.google.com/group/opensport)
9
8
 
10
9
 
11
10
 
@@ -20,9 +19,7 @@ as an example:
20
19
  ``` ruby
21
20
  require 'sportdb/readers'
22
21
 
23
- SportDb.connect( adapter: 'sqlite3',
24
- database: './england.db' )
25
- SportDb.create_all ## build database schema (tables, indexes, etc.)
22
+ SportDb.open( './england.db' )
26
23
  ```
27
24
 
28
25
  **Step 2**
@@ -83,14 +80,14 @@ pl_2015_16.teams.count #=> 20
83
80
  # INNER JOIN events_teams ON teams.id = events_teams.team_id
84
81
  # WHERE events_teams.event_id = 1
85
82
 
86
- pl_2015_16.games.count #=> 380
87
- #=> SELECT COUNT(*) FROM games
88
- # INNER JOIN rounds ON games.round_id = rounds.id
83
+ pl_2015_16.matches.count #=> 380
84
+ #=> SELECT COUNT(*) FROM matches
85
+ # INNER JOIN rounds ON matches.round_id = rounds.id
89
86
  # WHERE rounds.event_id = 1
90
87
 
91
88
  pl_2019_20 = Event.find_by( key: 'eng.1.2019/20' )
92
89
  pl_2015_16.teams.count #=> 20
93
- pl_2015_16.games.count #=> 380
90
+ pl_2015_16.matches.count #=> 380
94
91
 
95
92
  # -or-
96
93
 
@@ -151,6 +148,8 @@ Use it as you please with no restrictions whatsoever.
151
148
 
152
149
  ## Questions? Comments?
153
150
 
154
- Send them along to the
155
- [Open Sports & Friends Forum/Mailing List](http://groups.google.com/group/opensport).
156
- Thanks!
151
+ Yes, you can. More than welcome.
152
+ See [Help & Support »](https://github.com/openfootball/help)
153
+
154
+
155
+
data/Rakefile CHANGED
@@ -8,10 +8,10 @@ Hoe.spec 'sportdb-readers' do
8
8
  self.summary = "sportdb-readers - sport.db readers for leagues, seasons, clubs, match schedules and results, and more"
9
9
  self.description = summary
10
10
 
11
- self.urls = ['https://github.com/sportdb/sport.db']
11
+ self.urls = { home: 'https://github.com/sportdb/sport.db' }
12
12
 
13
13
  self.author = 'Gerald Bauer'
14
- self.email = 'opensport@googlegroups.com'
14
+ self.email = 'gerald.bauer@gmail.com'
15
15
 
16
16
  # switch extension to .markdown for gihub formatting
17
17
  self.readme_file = 'README.md'
@@ -20,7 +20,7 @@ Hoe.spec 'sportdb-readers' do
20
20
  self.licenses = ['Public Domain']
21
21
 
22
22
  self.extra_deps = [
23
- ['sportdb-sync', '>= 1.1.0'],
23
+ ['sportdb-sync', '>= 1.2.0'],
24
24
  ]
25
25
 
26
26
  self.spec_extras = {
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
 
3
2
  module SportDb
4
3
 
@@ -43,8 +42,8 @@ class ConfReader ## todo/check: rename to EventsReaderV2 (use plural?) why? w
43
42
  else
44
43
  conf.each do |name, _|
45
44
  ## note: rank and standing gets ignored (not used) for now
46
- teams << catalog.clubs.find_by!( name: name,
47
- country: league.country )
45
+ teams << catalog.clubs.find_by!( name: name,
46
+ league: league )
48
47
  end
49
48
  end
50
49
  else ### assume national teams
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
 
3
2
  module SportDb
4
3
 
@@ -36,8 +35,9 @@ class MatchReader ## todo/check: rename to MatchReaderV2 (use plural?) why? w
36
35
  'it' => 'it', ## it - Italian
37
36
  'es' => 'es', ## es - Español (Spanish)
38
37
  'mx' => 'es',
38
+ 'ar' => 'es', ## Argentina
39
39
  'pt' => 'pt', ## pt - Português (Portuguese)
40
- 'br' => 'br' ## !!! todo/check - br exists?? use pt portuges??
40
+ 'br' => 'pt',
41
41
  }
42
42
 
43
43
  secs.each do |sec| ## sec(tion)s
@@ -69,9 +69,16 @@ class MatchReader ## todo/check: rename to MatchReaderV2 (use plural?) why? w
69
69
  end
70
70
  end
71
71
 
72
- auto_conf_teams, _ = AutoConfParser.parse( lines,
73
- start: start )
74
72
 
73
+ ### todo/check: make sure team include teams from group def too!!!!!
74
+ ###
75
+ ### note - only use teams and grounds for now
76
+ auto_conf_teams,
77
+ _rounds, _groups, _round_defs, _group_defs,
78
+ auto_conf_grounds,
79
+ _ = AutoConfParser.parse( lines, start: start )
80
+
81
+
75
82
  ## step 1: map/find teams
76
83
 
77
84
  ## note: loop over keys (holding the names); values hold the usage counter!! e.g. 'Arsenal' => 2, etc.
@@ -81,20 +88,34 @@ class MatchReader ## todo/check: rename to MatchReaderV2 (use plural?) why? w
81
88
  ## todo/fix: make more generic / reuseable!!!!
82
89
  mods = {}
83
90
  ## europa league uses same mods as champions league
84
- mods[ 'uefa.el' ] = mods[ 'uefa.cl' ] = catalog.clubs.build_mods(
91
+ mods[ 'uefa.el.quali' ] =
92
+ mods[ 'uefa.cl.quali' ] =
93
+ mods[ 'uefa.el' ] =
94
+ mods[ 'uefa.cl' ] = catalog.clubs.build_mods(
85
95
  { 'Liverpool | Liverpool FC' => 'Liverpool FC, ENG',
86
96
  'Arsenal | Arsenal FC' => 'Arsenal FC, ENG',
87
97
  'Barcelona' => 'FC Barcelona, ESP',
88
98
  'Valencia' => 'Valencia CF, ESP' })
89
99
  end
90
100
 
101
+ # puts " [debug] auto_conf_teams:"
102
+ # pp auto_conf_teams
103
+
104
+
91
105
  teams = catalog.teams.find_by!( name: auto_conf_teams.keys,
92
106
  league: league,
93
107
  mods: mods )
94
108
 
109
+ # puts " [debug] teams:"
110
+ # pp teams
111
+
95
112
  ## build mapping - name => team struct record
96
113
  team_mapping = auto_conf_teams.keys.zip( teams ).to_h
97
114
 
115
+ # puts " [debug] team_mapping:"
116
+ # pp team_mapping
117
+
118
+
98
119
 
99
120
  parser = MatchParser.new( lines,
100
121
  team_mapping,
@@ -133,12 +154,32 @@ class MatchReader ## todo/check: rename to MatchReaderV2 (use plural?) why? w
133
154
  end
134
155
 
135
156
 
136
- rounds.each do |round|
137
- round_rec = Sync::Round.find_or_create( round, event: event_rec ) ## check: use/rename to EventRound why? why not?
138
- end
157
+ ## build a lookup cache for team_recs (used by group lookup)
158
+ ## lookup by "canonical" name
159
+ cache_team_recs = new_team_recs.reduce({}) { |h,rec| h[rec.name] = rec; h }
139
160
 
140
161
  groups.each do |group|
141
162
  group_rec = Sync::Group.find_or_create( group, event: event_rec ) ## check: use/rename to EventGroup why? why not?
163
+
164
+ ########
165
+ ## add/update teams - todo/fix/clean-up - find a better way or move to sync? - possible?
166
+ ## e.g. group.teams assumes an array of team names e.g.
167
+ ## ["Spain", "Czech Republic", "Turkey", "Croatia"]
168
+ group_team_ids = []
169
+ group.teams.each do |team_name|
170
+ team_rec = cache_team_recs[ team_name ]
171
+ if team_rec.nil? ## assume team MUST always be present/known in mapping (via autoconfig parser)
172
+ puts "!! ERROR - no (cached) team rec found for team in group >#{group.name}< for >#{team_name}<"
173
+ exit 1
174
+ end
175
+ group_team_ids << team_rec.id
176
+ end
177
+ group_rec.team_ids = group_team_ids ## reset/update all teams at once (via ids)
178
+ end
179
+
180
+
181
+ rounds.each do |round|
182
+ round_rec = Sync::Round.find_or_create( round, event: event_rec ) ## check: use/rename to EventRound why? why not?
142
183
  end
143
184
 
144
185
  matches.each do |match|
@@ -1,12 +1,11 @@
1
- # encoding: utf-8
2
1
 
3
2
 
4
3
  module SportDb
5
4
  module Readers
6
5
 
7
6
  MAJOR = 1 ## todo: namespace inside version or something - why? why not??
8
- MINOR = 1
9
- PATCH = 1
7
+ MINOR = 2
8
+ PATCH = 0
10
9
  VERSION = [MAJOR,MINOR,PATCH].join('.')
11
10
 
12
11
  def self.version
@@ -14,7 +13,7 @@ module Readers
14
13
  end
15
14
 
16
15
  def self.banner
17
- "sportdb-readers/#{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
16
+ "sportdb-readers/#{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}] in (#{root})"
18
17
  end
19
18
 
20
19
  def self.root
@@ -1,14 +1,14 @@
1
- # encoding: utf-8
2
1
 
3
2
  require 'sportdb/sync'
4
3
 
5
4
 
6
5
  ###
7
6
  # our own code
8
- require 'sportdb/readers/version' # let version always go first
9
- require 'sportdb/readers/conf_reader'
10
- require 'sportdb/readers/match_reader'
11
- require 'sportdb/readers/package'
7
+ require_relative 'readers/version' # let version always go first
8
+ require_relative 'readers/conf_reader'
9
+ require_relative 'readers/match_reader'
10
+ require_relative 'readers/package'
11
+
12
12
 
13
13
 
14
14
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sportdb-readers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-07 00:00:00.000000000 Z
11
+ date: 2024-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sportdb-sync
@@ -16,45 +16,51 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 1.1.0
19
+ version: 1.2.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 1.1.0
26
+ version: 1.2.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rdoc
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '4.0'
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '7'
34
37
  type: :development
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
- - - "~>"
41
+ - - ">="
39
42
  - !ruby/object:Gem::Version
40
43
  version: '4.0'
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '7'
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: hoe
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
51
  - - "~>"
46
52
  - !ruby/object:Gem::Version
47
- version: '3.16'
53
+ version: '4.1'
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
58
  - - "~>"
53
59
  - !ruby/object:Gem::Version
54
- version: '3.16'
60
+ version: '4.1'
55
61
  description: sportdb-readers - sport.db readers for leagues, seasons, clubs, match
56
62
  schedules and results, and more
57
- email: opensport@googlegroups.com
63
+ email: gerald.bauer@gmail.com
58
64
  executables: []
59
65
  extensions: []
60
66
  extra_rdoc_files:
@@ -73,20 +79,11 @@ files:
73
79
  - lib/sportdb/readers/match_reader.rb
74
80
  - lib/sportdb/readers/package.rb
75
81
  - lib/sportdb/readers/version.rb
76
- - test/helper.rb
77
- - test/test_conf_reader.rb
78
- - test/test_match_reader_champs.rb
79
- - test/test_match_reader_eng.rb
80
- - test/test_match_reader_euro.rb
81
- - test/test_match_reader_mu.rb
82
- - test/test_read.rb
83
- - test/test_reader.rb
84
- - test/test_reader_champs.rb
85
82
  homepage: https://github.com/sportdb/sport.db
86
83
  licenses:
87
84
  - Public Domain
88
85
  metadata: {}
89
- post_install_message:
86
+ post_install_message:
90
87
  rdoc_options:
91
88
  - "--main"
92
89
  - README.md
@@ -103,9 +100,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
100
  - !ruby/object:Gem::Version
104
101
  version: '0'
105
102
  requirements: []
106
- rubyforge_project:
107
- rubygems_version: 2.5.2
108
- signing_key:
103
+ rubygems_version: 3.4.10
104
+ signing_key:
109
105
  specification_version: 4
110
106
  summary: sportdb-readers - sport.db readers for leagues, seasons, clubs, match schedules
111
107
  and results, and more
data/test/helper.rb DELETED
@@ -1,23 +0,0 @@
1
- ## note: use the local version of sportdb gems
2
- $LOAD_PATH.unshift( File.expand_path( '../sportdb-formats/lib' ))
3
- $LOAD_PATH.unshift( File.expand_path( '../sportdb-config/lib' ))
4
- $LOAD_PATH.unshift( File.expand_path( '../sportdb-models/lib' ))
5
- $LOAD_PATH.unshift( File.expand_path( '../sportdb-sync/lib' ))
6
-
7
-
8
- ## minitest setup
9
- require 'minitest/autorun'
10
-
11
-
12
-
13
- ## our own code
14
- require 'sportdb/readers'
15
-
16
- ## use (switch to) "external" datasets
17
- SportDb::Import.config.leagues_dir = "../../../openfootball/leagues"
18
- SportDb::Import.config.clubs_dir = "../../../openfootball/clubs"
19
-
20
-
21
- COUNTRIES = SportDb::Import.catalog.countries
22
- LEAGUES = SportDb::Import.catalog.leagues
23
- CLUBS = SportDb::Import.catalog.clubs
@@ -1,78 +0,0 @@
1
- # encoding: utf-8
2
-
3
- ###
4
- # to run use
5
- # ruby -I ./lib -I ./test test/test_conf_reader.rb
6
-
7
-
8
- require 'helper'
9
-
10
-
11
- class TestConfReader < MiniTest::Test
12
-
13
- def setup
14
- SportDb.connect( adapter: 'sqlite3',
15
- database: ':memory:' )
16
- SportDb.create_all ## build schema
17
-
18
- ## turn on logging to console
19
- ActiveRecord::Base.logger = Logger.new(STDOUT)
20
- end
21
-
22
- def test_read
23
- # path = "../../../openfootball/austria/2018-19/.conf.txt"
24
- path = "../../../openfootball/england/2015-16/.conf.txt"
25
- # path = "../../../openfootball/england/2017-18/.conf.txt"
26
- # path = "../../../openfootball/england/2018-19/.conf.txt"
27
- # path = "../../../openfootball/england/2019-20/.conf.txt"
28
- SportDb::ConfReader.read( path )
29
- end # method test_read
30
-
31
-
32
- def test_read_champs
33
- txt =<<TXT
34
- = UEFA Champions League 2017/18
35
-
36
- Manchester United › ENG
37
- Liverpool › ENG
38
- Chelsea › ENG
39
- Manchester City › ENG
40
- Tottenham Hotspur › ENG
41
-
42
- Atlético Madrid › ESP
43
- Barcelona › ESP
44
- Sevilla › ESP
45
- Real Madrid › ESP
46
-
47
- Roma › ITA
48
- Juventus › ITA
49
- Napoli › ITA
50
-
51
- Bayern München › GER
52
- Borussia Dortmund › GER
53
- RB Leipzig › GER
54
-
55
- Benfica › POR
56
- Sporting CP › POR
57
- Porto › POR
58
-
59
- CSKA Moscow › RUS
60
- Spartak Moscow › RUS
61
-
62
- Paris Saint-Germain › FRA
63
- Basel › SUI
64
- Celtic › SCO
65
- Anderlecht › BEL
66
- Qarabağ › AZE
67
- Olympiacos › GRE
68
- Maribor › SVN
69
- Shakhtar Donetsk › UKR
70
- Feyenoord › NED
71
- Beşiktaş › TUR
72
- Monaco › MCO
73
- APOEL › CYP
74
- TXT
75
-
76
- SportDb::ConfReader.parse( txt )
77
- end
78
- end # class TestConfReader