sportdb-writers 0.0.1 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/CHANGELOG.md +6 -4
- data/Manifest.txt +2 -4
- data/README.md +26 -28
- data/Rakefile +32 -30
- data/lib/sportdb/leagues/leagues_at.rb +35 -39
- data/lib/sportdb/leagues/leagues_de.rb +21 -29
- data/lib/sportdb/leagues/leagues_eng.rb +58 -70
- data/lib/sportdb/leagues/leagues_es.rb +15 -19
- data/lib/sportdb/leagues/leagues_europe.rb +178 -213
- data/lib/sportdb/leagues/leagues_it.rb +16 -20
- data/lib/sportdb/leagues/leagues_mx.rb +23 -25
- data/lib/sportdb/leagues/leagues_south_america.rb +17 -21
- data/lib/sportdb/leagues/leagues_world.rb +14 -16
- data/lib/sportdb/writers/github.rb +195 -0
- data/lib/sportdb/writers/goals.rb +57 -0
- data/lib/sportdb/writers/txt_writer.rb +218 -407
- data/lib/sportdb/writers/version.rb +24 -24
- data/lib/sportdb/writers/write.rb +269 -367
- data/lib/sportdb/writers.rb +97 -31
- metadata +42 -17
- data/lib/sportdb/writers/config.rb +0 -18
- data/test/helper.rb +0 -19
- data/test/test_txt_writer.rb +0 -124
- data/test/test_version.rb +0 -16
data/lib/sportdb/writers.rb
CHANGED
@@ -1,31 +1,97 @@
|
|
1
|
-
## just use sportdb/catalogs ?! - why? why not?
|
2
|
-
# require 'sportdb/importers' # -- requires db support
|
3
|
-
# require 'sportdb/readers' # -- requires db support
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
require '
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
end
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
1
|
+
## just use sportdb/catalogs ?! - why? why not?
|
2
|
+
# require 'sportdb/importers' # -- requires db support
|
3
|
+
# require 'sportdb/readers' # -- requires db support
|
4
|
+
#
|
5
|
+
# note - for now only requires sportdb/formats !!!
|
6
|
+
# normalize moved out as a proc!!!
|
7
|
+
require 'sportdb/formats'
|
8
|
+
|
9
|
+
|
10
|
+
## todo/fix - make sure upstream cocos is included/required
|
11
|
+
require 'cocos'
|
12
|
+
|
13
|
+
|
14
|
+
module Writer
|
15
|
+
class Configuration
|
16
|
+
def out_dir() @out_dir || './tmp'; end
|
17
|
+
def out_dir=(value) @out_dir = value; end
|
18
|
+
## add outdir alias - why? why not?
|
19
|
+
end # class Configuration
|
20
|
+
|
21
|
+
## lets you use
|
22
|
+
## Write.configure do |config|
|
23
|
+
## config.out_dir = "??"
|
24
|
+
## end
|
25
|
+
def self.configure() yield( config ); end
|
26
|
+
def self.config() @config ||= Configuration.new; end
|
27
|
+
end # module Writer
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
###
|
32
|
+
# our own code
|
33
|
+
require_relative 'writers/version'
|
34
|
+
require_relative 'writers/txt_writer'
|
35
|
+
|
36
|
+
require_relative 'writers/goals'
|
37
|
+
require_relative 'writers/write'
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
########################
|
42
|
+
# push & pull github scripts
|
43
|
+
require 'gitti' ## note - requires git machinery
|
44
|
+
|
45
|
+
require_relative 'writers/github' ## github helpers/update machinery
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
## setup empty leagues (info) hash
|
50
|
+
module Writer
|
51
|
+
LEAGUES = {}
|
52
|
+
end
|
53
|
+
|
54
|
+
require_relative 'leagues/leagues_at'
|
55
|
+
require_relative 'leagues/leagues_de'
|
56
|
+
require_relative 'leagues/leagues_eng'
|
57
|
+
require_relative 'leagues/leagues_es'
|
58
|
+
require_relative 'leagues/leagues_europe'
|
59
|
+
require_relative 'leagues/leagues_it'
|
60
|
+
require_relative 'leagues/leagues_mx'
|
61
|
+
require_relative 'leagues/leagues_south_america'
|
62
|
+
require_relative 'leagues/leagues_world'
|
63
|
+
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
###
|
68
|
+
## todo/fix: move more code into tool class or such? - why? why not?
|
69
|
+
|
70
|
+
## todo/check: find a better name for helper?
|
71
|
+
## find_all_datasets, filter_datatsets - add alias(es???
|
72
|
+
## queries (lik ARGV) e.g. ['at'] or ['eng', 'de'] etc. list of strings
|
73
|
+
def filter_datasets( datasets, queries=[] )
|
74
|
+
## find all matching leagues (that is, league keys)
|
75
|
+
if queries.empty? ## no filter - get all league keys
|
76
|
+
datasets
|
77
|
+
else
|
78
|
+
datasets.find_all do |dataset|
|
79
|
+
found = false
|
80
|
+
## note: normalize league key (remove dot and downcase)
|
81
|
+
league_key = dataset[0].gsub( '.', '' )
|
82
|
+
queries.each do |query|
|
83
|
+
q = query.gsub( '.', '' ).downcase
|
84
|
+
if league_key.start_with?( q )
|
85
|
+
found = true
|
86
|
+
break
|
87
|
+
end
|
88
|
+
end
|
89
|
+
found
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
puts SportDb::Module::Writers.banner # say hello
|
metadata
CHANGED
@@ -1,29 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sportdb-writers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.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:
|
11
|
+
date: 2024-07-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name: sportdb-
|
14
|
+
name: sportdb-formats
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: '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:
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: gitti
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: cocos
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
27
55
|
- !ruby/object:Gem::Dependency
|
28
56
|
name: rdoc
|
29
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -50,17 +78,17 @@ dependencies:
|
|
50
78
|
requirements:
|
51
79
|
- - "~>"
|
52
80
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
81
|
+
version: '4.1'
|
54
82
|
type: :development
|
55
83
|
prerelease: false
|
56
84
|
version_requirements: !ruby/object:Gem::Requirement
|
57
85
|
requirements:
|
58
86
|
- - "~>"
|
59
87
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
88
|
+
version: '4.1'
|
61
89
|
description: sportdb-writers - sport.db writers for match schedules and results, and
|
62
90
|
more
|
63
|
-
email:
|
91
|
+
email: gerald.bauer@gmail.com
|
64
92
|
executables: []
|
65
93
|
extensions: []
|
66
94
|
extra_rdoc_files:
|
@@ -82,18 +110,16 @@ files:
|
|
82
110
|
- lib/sportdb/leagues/leagues_south_america.rb
|
83
111
|
- lib/sportdb/leagues/leagues_world.rb
|
84
112
|
- lib/sportdb/writers.rb
|
85
|
-
- lib/sportdb/writers/
|
113
|
+
- lib/sportdb/writers/github.rb
|
114
|
+
- lib/sportdb/writers/goals.rb
|
86
115
|
- lib/sportdb/writers/txt_writer.rb
|
87
116
|
- lib/sportdb/writers/version.rb
|
88
117
|
- lib/sportdb/writers/write.rb
|
89
|
-
- test/helper.rb
|
90
|
-
- test/test_txt_writer.rb
|
91
|
-
- test/test_version.rb
|
92
118
|
homepage: https://github.com/sportdb/sport.db
|
93
119
|
licenses:
|
94
120
|
- Public Domain
|
95
121
|
metadata: {}
|
96
|
-
post_install_message:
|
122
|
+
post_install_message:
|
97
123
|
rdoc_options:
|
98
124
|
- "--main"
|
99
125
|
- README.md
|
@@ -110,9 +136,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
110
136
|
- !ruby/object:Gem::Version
|
111
137
|
version: '0'
|
112
138
|
requirements: []
|
113
|
-
|
114
|
-
|
115
|
-
signing_key:
|
139
|
+
rubygems_version: 3.4.10
|
140
|
+
signing_key:
|
116
141
|
specification_version: 4
|
117
142
|
summary: sportdb-writers - sport.db writers for match schedules and results, and more
|
118
143
|
test_files: []
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module Writer
|
2
|
-
|
3
|
-
class Configuration
|
4
|
-
def out_dir() @out_dir || './tmp'; end
|
5
|
-
def out_dir=(value) @out_dir = value; end
|
6
|
-
end # class Configuration
|
7
|
-
|
8
|
-
|
9
|
-
## lets you use
|
10
|
-
## Write.configure do |config|
|
11
|
-
## config.out_dir = "??"
|
12
|
-
## end
|
13
|
-
|
14
|
-
def self.configure() yield( config ); end
|
15
|
-
|
16
|
-
def self.config() @config ||= Configuration.new; end
|
17
|
-
|
18
|
-
end # module Writer
|
data/test/helper.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
## note: use the local version of sportdb gems
|
2
|
-
|
3
|
-
# todo/fix: use SPORTDB_DIR or such (for reuse) in boot!!!!!!!!
|
4
|
-
|
5
|
-
$LOAD_PATH.unshift( File.expand_path( '../../../sportdb/sport.db/sportdb-formats/lib' ))
|
6
|
-
$LOAD_PATH.unshift( File.expand_path( '../../../sportdb/sport.db/sportdb-config/lib' ))
|
7
|
-
|
8
|
-
|
9
|
-
## minitest setup
|
10
|
-
require 'minitest/autorun'
|
11
|
-
|
12
|
-
|
13
|
-
## our own code
|
14
|
-
require 'sportdb/writers'
|
15
|
-
|
16
|
-
|
17
|
-
## use (switch to) "external" datasets
|
18
|
-
SportDb::Import.config.clubs_dir = "../../../openfootball/clubs"
|
19
|
-
SportDb::Import.config.leagues_dir = "../../../openfootball/leagues"
|
data/test/test_txt_writer.rb
DELETED
@@ -1,124 +0,0 @@
|
|
1
|
-
###
|
2
|
-
# to run use
|
3
|
-
# ruby -I ./lib -I ./test test/test_txt_writer.rb
|
4
|
-
|
5
|
-
|
6
|
-
require 'helper'
|
7
|
-
|
8
|
-
|
9
|
-
class TestTxtWriter < MiniTest::Test
|
10
|
-
|
11
|
-
TxtMatchWriter = SportDb::TxtMatchWriter
|
12
|
-
|
13
|
-
|
14
|
-
def test_eng
|
15
|
-
matches = SportDb::CsvMatchParser.read( '../../stage/one/2019-20/eng.1.csv' )
|
16
|
-
|
17
|
-
puts
|
18
|
-
pp matches[0]
|
19
|
-
puts "#{matches.size} matches"
|
20
|
-
|
21
|
-
|
22
|
-
league_name = 'English Premier League'
|
23
|
-
season_key = '2019/20'
|
24
|
-
|
25
|
-
matches = normalize( matches, league: league_name )
|
26
|
-
|
27
|
-
path = './tmp/pl.txt'
|
28
|
-
TxtMatchWriter.write( path, matches,
|
29
|
-
title: "#{league_name} #{season_key}",
|
30
|
-
round: 'Matchday',
|
31
|
-
lang: 'en')
|
32
|
-
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_es
|
36
|
-
matches = SportDb::CsvMatchParser.read( '../../stage/one/2019-20/es.1.csv' )
|
37
|
-
|
38
|
-
puts
|
39
|
-
pp matches[0]
|
40
|
-
puts "#{matches.size} matches"
|
41
|
-
|
42
|
-
|
43
|
-
league_name = 'Primera División de España'
|
44
|
-
season_key = '2019/20'
|
45
|
-
|
46
|
-
matches = normalize( matches, league: league_name )
|
47
|
-
|
48
|
-
path = './tmp/liga.txt'
|
49
|
-
TxtMatchWriter.write( path, matches,
|
50
|
-
title: "#{league_name} #{season_key}",
|
51
|
-
round: 'Jornada',
|
52
|
-
lang: 'es')
|
53
|
-
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_it
|
57
|
-
matches = SportDb::CsvMatchParser.read( '../../stage/one/2019-20/it.1.csv' )
|
58
|
-
|
59
|
-
puts
|
60
|
-
pp matches[0]
|
61
|
-
puts "#{matches.size} matches"
|
62
|
-
|
63
|
-
|
64
|
-
league_name = 'Italian Serie A'
|
65
|
-
season_key = '2019/20'
|
66
|
-
|
67
|
-
matches = normalize( matches, league: league_name )
|
68
|
-
|
69
|
-
path = './tmp/seriea.txt'
|
70
|
-
TxtMatchWriter.write( path, matches,
|
71
|
-
title: "#{league_name} #{season_key}",
|
72
|
-
round: ->(round) { "%s^ Giornata" % round },
|
73
|
-
lang: 'it')
|
74
|
-
end
|
75
|
-
|
76
|
-
#####
|
77
|
-
# note: fix sort order e.g. cover
|
78
|
-
#
|
79
|
-
# 17^ Giornata
|
80
|
-
# [Mer. 18.12.]
|
81
|
-
# UC Sampdoria 1-2 Juventus
|
82
|
-
#
|
83
|
-
# 7^ Giornata
|
84
|
-
# [Mer. 18.12.]
|
85
|
-
# Brescia 0-2 US Sassuolo Calcio
|
86
|
-
#
|
87
|
-
# 17^ Giornata
|
88
|
-
# [Ven. 20.12.]
|
89
|
-
# ACF Fiorentina 1-4 AS Roma
|
90
|
-
|
91
|
-
|
92
|
-
########
|
93
|
-
# helper
|
94
|
-
# normalize team names
|
95
|
-
def normalize( matches, league: )
|
96
|
-
matches = matches.sort do |l,r|
|
97
|
-
## first by date (older first)
|
98
|
-
## next by matchday (lowwer first)
|
99
|
-
res = l.date <=> r.date
|
100
|
-
res = l.round <=> r.round if res == 0
|
101
|
-
res
|
102
|
-
end
|
103
|
-
|
104
|
-
|
105
|
-
league = SportDb::Import.catalog.leagues.find!( league )
|
106
|
-
country = league.country
|
107
|
-
|
108
|
-
## todo/fix: cache name lookups - why? why not?
|
109
|
-
matches.each do |match|
|
110
|
-
team1 = SportDb::Import.catalog.clubs.find_by!( name: match.team1,
|
111
|
-
country: country )
|
112
|
-
team2 = SportDb::Import.catalog.clubs.find_by!( name: match.team2,
|
113
|
-
country: country )
|
114
|
-
|
115
|
-
puts "#{match.team1} => #{team1.name}" if match.team1 != team1.name
|
116
|
-
puts "#{match.team2} => #{team2.name}" if match.team2 != team2.name
|
117
|
-
|
118
|
-
match.update( team1: team1.name )
|
119
|
-
match.update( team2: team2.name )
|
120
|
-
end
|
121
|
-
matches
|
122
|
-
end
|
123
|
-
|
124
|
-
end # class TestTxtWriter
|
data/test/test_version.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
###
|
2
|
-
# to run use
|
3
|
-
# ruby -I ./lib -I ./test test/test_version.rb
|
4
|
-
|
5
|
-
|
6
|
-
require 'helper'
|
7
|
-
|
8
|
-
class TestVersion < MiniTest::Test
|
9
|
-
|
10
|
-
def test_version
|
11
|
-
pp SportDb::Module::Writers::VERSION
|
12
|
-
pp SportDb::Module::Writers.banner
|
13
|
-
pp SportDb::Module::Writers.root
|
14
|
-
end
|
15
|
-
|
16
|
-
end # class TestVersion
|