sportdb-formats 2.0.0 → 2.0.1

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
  SHA256:
3
- metadata.gz: e1efe8dd989cd71d6a1860f9b0845b9aa96fadab5abe9e381bcae2cb3da77d5a
4
- data.tar.gz: d03be83401dec8b4ad1c09455d11c307bb4bd83e706d47c2ce8950dae1744e10
3
+ metadata.gz: 349708bb8a9fc26f5bc6ce47fd8b9b08b37f243e04e017fc22fa1057a165b733
4
+ data.tar.gz: 9fb3ba56070b20d14aff9f8804c2201a0fb5599ff111fa8b454ddf32fe81e264
5
5
  SHA512:
6
- metadata.gz: 64e3013796d515b02564e179bb3b0eed1bc12a671f9f0615d613c9f86dc3eea465a0ff6680904c5f1465dc7b252791bc8ae4012c914599bbcddf1534aa77d705
7
- data.tar.gz: f1f9ed7ec7fc1fb6af8fb143f7510e503d70d0e7ab6114763b2bdc3aef545d9dde6b0a6bdff4064e273268d5ba0b01e865aaeeebeee3d1c42ffd6767c47b2db8
6
+ metadata.gz: e3ffff589ba03e431c46d9244cb660572b94aa1f95ceb3d7d1b71182048d7c024bddeeaec6b43e36ddf0353071d4cb85b5db62f0a427677ce5e20a40cd347691
7
+ data.tar.gz: 8a75b96b980429392dd9e909ba4f8441b96b129ec2cb6745eef65cf481889fb77ab426340ee277a28f6def7ae42e6de20f6d307aed082bea0df357d79d014ad0
data/CHANGELOG.md CHANGED
@@ -1,4 +1,4 @@
1
- ### 2.0.0
1
+ ### 2.0.1
2
2
 
3
3
  ### 0.0.1 / 2019-10-28
4
4
 
data/Manifest.txt CHANGED
@@ -16,7 +16,6 @@ lib/sportdb/formats/league/league_outline_reader.rb
16
16
  lib/sportdb/formats/league/league_reader.rb
17
17
  lib/sportdb/formats/match/conf_parser.rb
18
18
  lib/sportdb/formats/match/match_parser.rb
19
- lib/sportdb/formats/name_helper.rb
20
19
  lib/sportdb/formats/package.rb
21
20
  lib/sportdb/formats/search/sport.rb
22
21
  lib/sportdb/formats/search/structs.rb
data/README.md CHANGED
@@ -1,11 +1,10 @@
1
- # sportdb-formats - sport.db format and text utilities
1
+ # sportdb-formats - sport.db format and text utilities
2
2
 
3
3
 
4
4
  * home :: [github.com/sportdb/sport.db](https://github.com/sportdb/sport.db)
5
5
  * bugs :: [github.com/sportdb/sport.db/issues](https://github.com/sportdb/sport.db/issues)
6
6
  * gem :: [rubygems.org/gems/sportdb-formats](https://rubygems.org/gems/sportdb-formats)
7
7
  * rdoc :: [rubydoc.info/gems/sportdb-formats](http://rubydoc.info/gems/sportdb-formats)
8
- * forum :: [opensport](http://groups.google.com/group/opensport)
9
8
 
10
9
 
11
10
 
@@ -19,8 +18,10 @@ The `sportdb-formats` scripts are dedicated to the public domain.
19
18
  Use it as you please with no restrictions whatsoever.
20
19
 
21
20
 
21
+
22
22
  ## Questions? Comments?
23
23
 
24
- Send them along to the
25
- [Open Sports & Friends Forum/Mailing List](http://groups.google.com/group/opensport).
26
- Thanks!
24
+ Yes, you can. More than welcome.
25
+ See [Help & Support »](https://github.com/openfootball/help)
26
+
27
+
data/Rakefile CHANGED
@@ -20,13 +20,14 @@ Hoe.spec 'sportdb-formats' do
20
20
  self.licenses = ['Public Domain']
21
21
 
22
22
  self.extra_deps = [
23
- ['sportdb-structs', '>= 0.3.0'],
24
- ['sportdb-parser', '>= 0.2.0'],
25
- ['date-formats', '>= 1.0.2'],
26
- ['cocos', '>= 0.4.0'],
27
- ['logutils', '>= 0.6.1'],
28
-
29
- ['rubyzip', '>= 2.3.2' ],
23
+ ['sportdb-structs', '>= 0.3.1'],
24
+ ['sportdb-parser', '>= 0.2.0'],
25
+ ['sportdb-catalogs', '>= 1.2.2'],
26
+ ['date-formats', '>= 1.0.2'],
27
+ ['cocos', '>= 0.4.0'],
28
+ ['logutils', '>= 0.6.1'],
29
+
30
+ ['rubyzip', '>= 2.3.2' ],
30
31
  ]
31
32
 
32
33
  self.spec_extras = {
@@ -1,71 +1,6 @@
1
1
 
2
2
  module SportDb
3
3
  module Import
4
-
5
-
6
- class EventInfo
7
- ## "high level" info (summary) about event
8
- ## (like a "wikipedia infobox")
9
- ## use for checking dataset imports; lets you check e.g.
10
- ## - dates within range
11
- ## - number of teams e.g. 20
12
- ## - matches played e.g. 380
13
- ## - goals scored e.g. 937
14
- ## etc.
15
-
16
- attr_reader :league,
17
- :season,
18
- :teams,
19
- :matches,
20
- :goals,
21
- :start_date,
22
- :end_date
23
-
24
- def initialize( league:, season:,
25
- start_date: nil, end_date: nil,
26
- teams: nil,
27
- matches: nil,
28
- goals: nil )
29
-
30
- @league = league
31
- @season = season
32
-
33
- @start_date = start_date
34
- @end_date = end_date
35
-
36
- @teams = teams ## todo/check: rename/use teams_count ??
37
- @matches = matches ## todo/check: rename/use match_count ??
38
- @goals = goals
39
- end
40
-
41
- def include?( date )
42
- ## todo/fix: add options e.g.
43
- ## - add delta/off_by_one or such?
44
- ## - add strict (for) only return true if date range (really) defined (no generic auto-rules)
45
-
46
- ### note: for now allow off by one error (via timezone/local time errors)
47
- ## todo/fix: issue warning if off by one!!!!
48
- if @start_date && @end_date
49
- date >= (@start_date-1) &&
50
- date <= (@end_date+1)
51
- else
52
- if @season.year?
53
- # assume generic rule
54
- ## same year e.g. Jan 1 - Dec 31; always true for now
55
- date.year == @season.start_year
56
- else
57
- # assume generic rule
58
- ## July 1 - June 30 (Y+1)
59
- ## - todo/check -start for some countries/leagues in June 1 or August 1 ????
60
- date >= Date.new( @season.start_year, 7, 1 ) &&
61
- date <= Date.new( @season.end_year, 6, 30 )
62
- end
63
- end
64
- end # method include?
65
- alias_method :between?, :include?
66
- end # class EventInfo
67
-
68
-
69
4
  class EventInfoReader
70
5
  def catalog() Import.catalog; end
71
6
 
@@ -4,7 +4,7 @@ module Formats
4
4
 
5
5
  MAJOR = 2 ## todo: namespace inside version or something - why? why not??
6
6
  MINOR = 0
7
- PATCH = 0
7
+ PATCH = 1
8
8
  VERSION = [MAJOR,MINOR,PATCH].join('.')
9
9
 
10
10
  def self.version
@@ -30,8 +30,6 @@ require_relative 'formats/datafile'
30
30
  require_relative 'formats/datafile_package'
31
31
  require_relative 'formats/package'
32
32
 
33
- require_relative 'formats/name_helper'
34
-
35
33
 
36
34
 
37
35
  ## let's put test configuration in its own namespace / module
@@ -151,6 +149,8 @@ module SportDb
151
149
 
152
150
  Player = ::Sports::Player
153
151
 
152
+ EventInfo = ::Sports::EventInfo
153
+
154
154
 
155
155
  class Team
156
156
  ## add convenience lookup helper / method for name by season for now
@@ -243,4 +243,75 @@ require_relative 'formats/ground/ground_reader'
243
243
 
244
244
 
245
245
 
246
+
247
+
248
+ ### auto-configure builtin lookups via catalog.db(s)
249
+ require 'sportdb/catalogs'
250
+
251
+
252
+ module SportDb
253
+ module Import
254
+
255
+ class Configuration
256
+ ## note: add more configs (open class), see sportdb-structs for original config!!!
257
+
258
+ ###
259
+ # find a better name for setting - why? why not?
260
+ # how about catalogdb or ???
261
+ attr_reader :catalog_path
262
+ def catalog_path=(path)
263
+ @catalog_path = path
264
+ ########
265
+ # reset database here to new path
266
+ CatalogDb::Metal::Record.database = path
267
+
268
+ ## plus automagically set world search too (to use CatalogDb)
269
+ self.world = WorldSearch.new(
270
+ countries: CatalogDb::Metal::Country,
271
+ cities: CatalogDb::Metal::City,
272
+ )
273
+
274
+ @catalog_path
275
+ end
276
+
277
+ def catalog
278
+ @catalog ||= SportSearch.new(
279
+ leagues: CatalogDb::Metal::League,
280
+ national_teams: CatalogDb::Metal::NationalTeam,
281
+ clubs: CatalogDb::Metal::Club,
282
+ grounds: CatalogDb::Metal::Ground,
283
+ events: CatalogDb::Metal::EventInfo,
284
+ players: CatalogDb::Metal::Player, # note - via players.db !!!
285
+ )
286
+ end
287
+
288
+ ###
289
+ # find a better name for setting - why? why not?
290
+ # how about playersdb or ???
291
+ attr_reader :players_path
292
+ def players_path=(path)
293
+ @players_path = path
294
+ ########
295
+ # reset database here to new path
296
+ CatalogDb::Metal::PlayerRecord.database = path
297
+
298
+ @players_path
299
+ end
300
+ end # class Configuration
301
+
302
+
303
+ ## e.g. use config.catalog -- keep Import.catalog as a shortcut (for "read-only" access)
304
+ def self.catalog() config.catalog; end
305
+ end # module Import
306
+ end # module SportDb
307
+
308
+
309
+ ###
310
+ ## add default/built-in catalog here - why? why not?
311
+ ## todo/fix - set catalog_path on demand
312
+ ## note: for now required for world search setup etc.
313
+ SportDb::Import.config.catalog_path = "#{FootballDb::Data.data_dir}/catalog.db"
314
+
315
+
316
+
246
317
  puts SportDb::Module::Formats.banner # say hello
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sportdb-formats
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-22 00:00:00.000000000 Z
11
+ date: 2024-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sportdb-structs
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.3.0
19
+ version: 0.3.1
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: 0.3.0
26
+ version: 0.3.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sportdb-parser
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.2.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: sportdb-catalogs
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 1.2.2
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 1.2.2
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: date-formats
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -155,7 +169,6 @@ files:
155
169
  - lib/sportdb/formats/league/league_reader.rb
156
170
  - lib/sportdb/formats/match/conf_parser.rb
157
171
  - lib/sportdb/formats/match/match_parser.rb
158
- - lib/sportdb/formats/name_helper.rb
159
172
  - lib/sportdb/formats/package.rb
160
173
  - lib/sportdb/formats/search/sport.rb
161
174
  - lib/sportdb/formats/search/structs.rb
@@ -1,87 +0,0 @@
1
-
2
- module SportDb
3
- module NameHelper
4
-
5
-
6
- ## note: allow placeholder years to e.g. (-___) or (-????)
7
- ## for marking missing (to be filled in) years
8
- ## e.g. (1887-1911), (-2013),
9
- ## (1946-2001, 2013-) etc.
10
- ## todo/check: make more strict e.g. only accept 4-digit years? - why? why not?
11
- YEAR_RE = %r{\(
12
- [0-9, ?_-]+? # note: non-greedy (minimum/first) match
13
- \)}x
14
-
15
- def strip_year( name )
16
- ## check for year(s) e.g. (1887-1911), (-2013),
17
- ## (1946-2001, 2013-) etc.
18
- ## todo/check: only sub once (not global) - why? why not?
19
- name.gsub( YEAR_RE, '' ).strip
20
- end
21
-
22
- def has_year?( name ) name =~ YEAR_RE; end
23
-
24
-
25
- LANG_RE = %r{\[
26
- [a-z]{1,2} # note also allow single-letter [a] or [d] or [e] - why? why not?
27
- \]}x
28
- def strip_lang( name )
29
- name.gsub( LANG_RE, '' ).strip
30
- end
31
-
32
- def has_lang?( name ) name =~ LANG_RE; end
33
-
34
-
35
- def sanitize( name )
36
- ## check for year(s) e.g. (1887-1911), (-2013),
37
- ## (1946-2001,2013-) etc.
38
- name = strip_year( name )
39
- ## check lang codes e.g. [en], [fr], etc.
40
- name = strip_lang( name )
41
- name
42
- end
43
-
44
-
45
- ## note: also add (),’,− etc. e.g.
46
- ## Estudiantes (LP) => Estudiantes LP
47
- ## Saint Patrick’s Athletic FC => Saint Patricks Athletic FC
48
- ## Myllykosken Pallo −47 => Myllykosken Pallo 47
49
- ##
50
- ## add & too!!
51
- ## e.g. Brighton & Hove Albion => Brighton Hove Albion -- and others in England
52
-
53
- NORM_RE = %r{
54
- [.'’º/()&_−-]
55
- }x # note: in [] dash (-) if last doesn't need to get escaped
56
- ## note: remove all dots (.), dash (-), ', º, /, etc.
57
- # . U+002E (46) - FULL STOP
58
- # ' U+0027 (39) - APOSTROPHE
59
- # ’ U+2019 (8217) - RIGHT SINGLE QUOTATION MARK
60
- # º U+00BA (186) - MASCULINE ORDINAL INDICATOR
61
- # / U+002F (47) - SOLIDUS
62
- # ( U+0028 (40) - LEFT PARENTHESIS
63
- # ) U+0029 (41) - RIGHT PARENTHESIS
64
- # − U+2212 (8722) - MINUS SIGN
65
- # - U+002D (45) - HYPHEN-MINUS
66
-
67
- ## for norm(alizing) names
68
- def strip_norm( name )
69
- name.gsub( NORM_RE, '' )
70
- end
71
-
72
- def normalize( name )
73
- # note: do NOT call sanitize here (keep normalize "atomic" for reuse)
74
- name = strip_norm( name )
75
- name = name.gsub( ' ', '' ) # note: also remove all spaces!!!
76
-
77
- ## todo/check: use our own downcase - why? why not?
78
- name = downcase_i18n( name ) ## do NOT care about upper and lowercase for now
79
- name
80
- end
81
-
82
-
83
- def variants( name ) Variant.find( name ); end
84
-
85
- end # module NameHelper
86
- end # module SportDb
87
-