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.
@@ -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
- require 'sportdb/catalogs'
5
-
6
-
7
- ###
8
- # our own code
9
- require 'sportdb/writers/version'
10
- require 'sportdb/writers/config'
11
- require 'sportdb/writers/txt_writer'
12
- require 'sportdb/writers/write'
13
-
14
- ## setup empty leagues (info) hash
15
- module Writer
16
- LEAGUES = {}
17
- end
18
-
19
- require 'sportdb/leagues/leagues_at'
20
- require 'sportdb/leagues/leagues_de'
21
- require 'sportdb/leagues/leagues_eng'
22
- require 'sportdb/leagues/leagues_es'
23
- require 'sportdb/leagues/leagues_europe'
24
- require 'sportdb/leagues/leagues_it'
25
- require 'sportdb/leagues/leagues_mx'
26
- require 'sportdb/leagues/leagues_south_america'
27
- require 'sportdb/leagues/leagues_world'
28
-
29
-
30
-
31
- puts SportDb::Module::Writers.banner # say hello
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.1
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: 2020-11-15 00:00:00.000000000 Z
11
+ date: 2024-07-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: sportdb-catalogs
14
+ name: sportdb-formats
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 1.0.0
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: 1.0.0
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: '3.22'
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: '3.22'
88
+ version: '4.1'
61
89
  description: sportdb-writers - sport.db writers for match schedules and results, and
62
90
  more
63
- email: opensport@googlegroups.com
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/config.rb
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
- rubyforge_project:
114
- rubygems_version: 2.5.2
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"
@@ -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