sports 0.0.1

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.
@@ -0,0 +1,19 @@
1
+
2
+ module Sports
3
+ MAJOR = 0 ## todo: namespace inside version or something - why? why not??
4
+ MINOR = 0
5
+ PATCH = 1
6
+ VERSION = [MAJOR,MINOR,PATCH].join('.')
7
+
8
+ def self.version
9
+ VERSION
10
+ end
11
+
12
+ def self.banner
13
+ "sports/#{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
14
+ end
15
+
16
+ def self.root
17
+ File.expand_path( File.dirname(File.dirname(__FILE__)) )
18
+ end
19
+ end # module Sports
@@ -0,0 +1,12 @@
1
+ ## note: use the local version of sportdb gems
2
+ $LOAD_PATH.unshift( File.expand_path( '../date-formats/lib' ))
3
+ $LOAD_PATH.unshift( File.expand_path( '../score-formats/lib' ))
4
+
5
+ ## minitest setup
6
+ require 'minitest/autorun'
7
+
8
+
9
+ ## our own code
10
+ require 'sports'
11
+
12
+
@@ -0,0 +1,38 @@
1
+ ###
2
+ # to run use
3
+ # ruby -I ./lib -I ./test test/test_clubs.rb
4
+
5
+
6
+ require 'helper'
7
+
8
+ class TestClubs < MiniTest::Test
9
+
10
+ Club = Sports::Club
11
+
12
+
13
+ def test_new
14
+ club = Club.new( name: 'Rapid Wien' )
15
+
16
+ assert_equal 'Rapid Wien', club.name
17
+ assert_equal ['Rapid Wien'], club.names
18
+ end
19
+
20
+ def test_duplicates
21
+ club = Club.new
22
+ club.name = 'Rapid Wien'
23
+
24
+ assert_equal false, club.duplicates?
25
+ duplicates = {}
26
+ assert_equal duplicates, club.duplicates
27
+
28
+ club.alt_names_auto += ['Rapid', 'Rapid Wien', 'SK Rapid Wien']
29
+
30
+ pp club
31
+
32
+ assert_equal true, club.duplicates?
33
+ duplicates = {'rapidwien'=>['Rapid Wien','Rapid Wien']}
34
+ pp club.duplicates
35
+ assert_equal duplicates, club.duplicates
36
+ end
37
+
38
+ end # class TestClubs
@@ -0,0 +1,30 @@
1
+ ###
2
+ # to run use
3
+ # ruby -I ./lib -I ./test test/test_csv_reader.rb
4
+
5
+
6
+ require 'helper'
7
+
8
+
9
+ class TestCsvReader < MiniTest::Test
10
+
11
+ def test_parse
12
+ recs = parse_csv( <<TXT )
13
+ ### World Countries
14
+
15
+ Key, Code, Name
16
+ af, AFG, Afghanistan
17
+ al, ALB, Albania
18
+ dz, ALG, Algeria
19
+ as, ASA, American Samoa (US)
20
+ TXT
21
+
22
+ pp recs
23
+ assert_equal [{ 'Key' => 'af', 'Code' => 'AFG', 'Name' => 'Afghanistan'},
24
+ { 'Key' => 'al', 'Code' => 'ALB', 'Name' => 'Albania'},
25
+ { 'Key' => 'dz', 'Code' => 'ALG', 'Name' => 'Algeria'},
26
+ { 'Key' => 'as', 'Code' => 'ASA', 'Name' => 'American Samoa (US)'},
27
+ ], recs[0..3]
28
+ end
29
+
30
+ end # class TestCsvReader
@@ -0,0 +1,30 @@
1
+ # encoding: utf-8
2
+
3
+ ###
4
+ # to run use
5
+ # ruby -I ./lib -I ./test test/test_match.rb
6
+
7
+
8
+ require 'helper'
9
+
10
+ class TestMatch < MiniTest::Test
11
+
12
+ Match = Sports::Match
13
+
14
+
15
+ def test_round
16
+ m = Match.new( team1: 'Team 1',
17
+ team2: 'Team 2',
18
+ round: 3 )
19
+ pp m
20
+ assert_equal 3, m.round
21
+ assert_nil m.score1
22
+ assert_nil m.score2
23
+
24
+ m = Match.new
25
+ m.update( round: 4 )
26
+ pp m
27
+ assert_equal 4, m.round
28
+ end # method test_round
29
+
30
+ end # class TestMatch
@@ -0,0 +1,47 @@
1
+ ###
2
+ # to run use
3
+ # ruby -I ./lib -I ./test test/test_match_status_parser.rb
4
+
5
+
6
+ require 'helper'
7
+
8
+
9
+ class TestMatchStatusParser < MiniTest::Test
10
+
11
+ Status = Sports::Status
12
+ StatusParser = Sports::StatusParser
13
+
14
+ def test_find
15
+ [['awarded [cancelled] canceled [ddd]', Status::CANCELLED],
16
+ ['awarded [bbb; canceled] canceled [awarded; comments] eeee', Status::AWARDED],
17
+ ['aaa bbb ccc ddd eeee', nil],
18
+ ].each do |rec|
19
+ line = rec[0]
20
+ status_exp = rec[1]
21
+ puts "line (before): >#{line}<"
22
+ status = StatusParser.find!( line )
23
+ puts "status: >#{status}<"
24
+ puts "line (after): >#{line}<"
25
+ puts
26
+
27
+ assert_equal status_exp, status
28
+ end
29
+ end # method test_find
30
+
31
+ def test_parse
32
+ [['cancelled ddd', Status::CANCELLED],
33
+ ['CANCELLED', Status::CANCELLED],
34
+ ['can.', Status::CANCELLED],
35
+ ['awarded; comments', Status::AWARDED],
36
+ ['awd. - comments', Status::AWARDED],
37
+ ['aaa bbb ccc ddd eeee', nil],
38
+ ].each do |rec|
39
+ str = rec[0]
40
+ status_exp = rec[1]
41
+ assert_equal status_exp, StatusParser.parse( str )
42
+ end
43
+ end
44
+
45
+ end # class TestMatchStatusParser
46
+
47
+
@@ -0,0 +1,65 @@
1
+ ###
2
+ # to run use
3
+ # ruby -I ./lib -I ./test test/test_name_helper.rb
4
+
5
+
6
+ require 'helper'
7
+
8
+
9
+ class TestNameHelper < MiniTest::Test
10
+
11
+ include Sports::NameHelper
12
+
13
+
14
+ def test_strip_norm ## strip (remove) non-norm characters e.g. ()'- etc.
15
+ [['Estudiantes (LP)', 'Estudiantes LP'],
16
+ ['Central Córdoba (SdE)', 'Central Córdoba SdE'],
17
+ ['Saint Patrick’s Athletic FC', 'Saint Patricks Athletic FC'],
18
+ ['Myllykosken Pallo −47', 'Myllykosken Pallo 47'],
19
+ ].each do |rec|
20
+ assert_equal rec[1], strip_norm( rec[0] )
21
+ end
22
+ end
23
+
24
+ def test_strip_year
25
+ [['A (1911-1912)', 'A'],
26
+ ['B (1911-1912, 1913-1915)', 'B'],
27
+ ['C (1911-___)', 'C'],
28
+ ['D (1911-???)', 'D'],
29
+ ['FC Linz (1946-2001, 2013-)', 'FC Linz'],
30
+ ['Admira Wien (-????)', 'Admira Wien'],
31
+ ['Admira Wien (-____)', 'Admira Wien'],
32
+ ].each do |rec|
33
+ assert_equal rec[1], strip_year( rec[0] )
34
+ end
35
+ end
36
+
37
+ def test_strip_lang
38
+ [['Bayern Munich [en]', 'Bayern Munich'],
39
+ ].each do |rec|
40
+ assert_equal rec[1], strip_lang( rec[0] )
41
+ end
42
+ end
43
+
44
+
45
+ def test_variants
46
+ ## hungarian
47
+ assert_equal ['Raba ETO Gyor'], variants( 'Rába ETO Győr' )
48
+ assert_equal ['Raba ETO Gyor', 'Rába ETO Gyoer'], variants( 'Rába ETO Györ' )
49
+
50
+ ## romanian
51
+ assert_equal ['Targu Mures'], variants( 'Târgu Mureș' )
52
+ assert_equal ['Targu Mures'], variants( 'Târgu Mureş' )
53
+ end
54
+
55
+
56
+ =begin
57
+ ### fix: move to ClubReader!!!!! not for general use
58
+ def test_wiki
59
+ assert_equal 'FC Wacker Innsbruck', strip_wiki( 'FC Wacker Innsbruck (2002)' )
60
+ assert_equal 'SK Austria Klagenfurt', strip_wiki( 'SK Austria Klagenfurt (2007)' )
61
+
62
+ assert_equal 'Willem II', strip_wiki( 'Willem II (football club)' )
63
+ end
64
+ =end
65
+ end # class TestNameHelper
@@ -0,0 +1,141 @@
1
+ ###
2
+ # to run use
3
+ # ruby -I ./lib -I ./test test/test_season.rb
4
+
5
+
6
+ require 'helper'
7
+
8
+ class TestSeason < MiniTest::Test
9
+
10
+
11
+ def test_to_path
12
+ assert_equal '2010-11', Season( '2010-11' ).to_path
13
+ assert_equal '2010-11', Season( '2010-2011' ).to_path
14
+ assert_equal '2010-11', Season( '2010/11' ).to_path
15
+ assert_equal '2010-11', Season( '2010/1' ).to_path
16
+ assert_equal '2010-11', Season( '2010/2011' ).to_path
17
+ assert_equal '2010', Season( '2010' ).to_path
18
+
19
+ assert_equal '2010-11', Season( 2010, 2011 ).to_path
20
+ assert_equal '2010-11', Season( 2010_2011 ).to_path
21
+ assert_equal '2010-11', Season( 20102011 ).to_path
22
+ assert_equal '2010-11', Season( 201011 ).to_path
23
+ assert_equal '2010-11', Season( 20101 ).to_path
24
+ assert_equal '2010', Season( 2010 ).to_path
25
+
26
+ assert_equal '2010s/2010-11', Season( '2010-11' ).to_path( :decade )
27
+ assert_equal '2010s/2010-11', Season( '2010-2011' ).to_path( :decade )
28
+ assert_equal '2010s/2010', Season( '2010' ).to_path( :decade )
29
+
30
+ assert_equal '1999-00', Season( '1999-00' ).to_path
31
+ assert_equal '1999-00', Season( '1999-2000' ).to_path
32
+ assert_equal '1990s/1999-00', Season( '1999-00' ).to_path( :decade )
33
+ assert_equal '1990s/1999-00', Season( '1999-2000' ).to_path( :decade )
34
+
35
+ assert_equal '2000s/2010-11', Season( '2010-11' ).to_path( :century )
36
+ assert_equal '2000s/2010-11', Season( '2010-2011' ).to_path( :century )
37
+ assert_equal '2000s/2010', Season( '2010' ).to_path( :century )
38
+
39
+ assert_equal '1900s/1999-00', Season( '1999-00' ).to_path( :century )
40
+ assert_equal '1900s/1999-00', Season( '1999-2000' ).to_path( :century )
41
+ end # method test_to_path
42
+
43
+
44
+ def test_key
45
+ assert_equal '2010/11', Season( '2010-11' ).key
46
+ assert_equal '2010/11', Season( '2010-2011' ).key
47
+ assert_equal '2010/11', Season( '2010/11' ).key
48
+ assert_equal '2010/11', Season( '2010/1' ).key
49
+ assert_equal '2010/11', Season( '2010/2011' ).key
50
+ assert_equal '2010', Season( '2010' ).key
51
+
52
+ assert_equal '1999/00', Season( '1999-00' ).key
53
+ assert_equal '1999/00', Season( '1999-2000' ).key
54
+ end # method test_key
55
+
56
+
57
+ def test_years
58
+ [Season( '1999-00' ),
59
+ Season( '1999/00' ),
60
+ Season( '1999/2000' ),
61
+ Season( 1999, 2000 ),
62
+ Season( 1999_00 ), ## allow "hacky" shortcuts - why? why not?
63
+ Season( 1999_2000 ),
64
+ ].each do |season|
65
+ assert_equal 1999, season.start_year
66
+ assert_equal 2000, season.end_year
67
+ end
68
+
69
+ [Season( '2010/1' ),
70
+ Season( '2010/11' ),
71
+ Season( 201011 ), ## allow "hacky" shortcuts - why? why not?
72
+ Season( 20102011 ),
73
+ ].each do |season|
74
+ assert_equal 2010, season.start_year
75
+ assert_equal 2011, season.end_year
76
+ end
77
+
78
+ [Season( '1999' ),
79
+ Season( 1999 ),
80
+ ].each do |season|
81
+ assert_equal 1999, season.start_year
82
+ assert_equal 1999, season.end_year
83
+ end
84
+
85
+ [Season( '2010' ),
86
+ Season( 2010 ),
87
+ ].each do |season|
88
+ assert_equal 2010, season.start_year
89
+ assert_equal 2010, season.end_year
90
+ end
91
+ end
92
+
93
+
94
+ def test_prev
95
+ assert_equal '2009/10', Season( '2010-11' ).prev.key
96
+ assert_equal '2009/10', Season( '2010-2011' ).prev.key
97
+ assert_equal '2009', Season( '2010' ).prev.key
98
+
99
+ assert_equal '1998/99', Season( '1999-00' ).prev.key
100
+ assert_equal '1998/99', Season( '1999-2000' ).prev.key
101
+ end
102
+
103
+ def test_next
104
+ assert_equal '2009/10', Season( '2008-09' ).next.key
105
+ assert_equal '2009/10', Season( '2008-2009' ).next.key
106
+ assert_equal '2009', Season( '2008' ).next.key
107
+
108
+ assert_equal '1998/99', Season( '1997-98' ).next.key
109
+ assert_equal '1998/99', Season( '1997-1998' ).next.key
110
+ end
111
+
112
+
113
+ def test_range
114
+ s2010 = Season( '2010' )..Season( '2019' )
115
+ pp s2010.to_a
116
+ # => [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019]
117
+
118
+ s2010 = Season( '2010-11')..Season( '2019-20')
119
+ pp s2010.to_a
120
+ # => [2010/11, 2011/12, 2012/13, 2013/14, 2014/15,
121
+ # 2015/16, 2016/17, 2017/18, 2018/19, 2019/20]
122
+
123
+ puts s2010 === Season( '2015-16' ) # true
124
+ puts s2010 === Season( '2015' ) # !!!! false - why? if using >= <=
125
+ puts s2010 === Season( '1999-00' ) # false
126
+ puts s2010 === Season( '2020-21' ) # false
127
+
128
+ puts
129
+ puts s2010.include? Season( '2015-16' ) # true
130
+ puts s2010.include? Season( '2015' ) # !!! false
131
+ puts s2010.include? Season( '1999-00' ) # false
132
+
133
+ assert_equal true, Season( '2010-11' ) < Season( '2015' )
134
+ assert_equal true, Season( '2015' ) < Season( '2019-20' )
135
+
136
+ assert_equal false, Season( '2015' ) == Season( '2015-16' )
137
+ assert_equal true, Season( '2015' ) < Season( '2015-16' )
138
+ assert_equal true, Season( '2015' ) == Season( '2015' )
139
+ end
140
+
141
+ end # class TestSeason
metadata ADDED
@@ -0,0 +1,162 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sports
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Gerald Bauer
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-08-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: alphabets
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 1.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: date-formats
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.0.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 1.0.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: score-formats
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 0.0.1
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 0.0.1
55
+ - !ruby/object:Gem::Dependency
56
+ name: csvreader
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 1.2.4
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 1.2.4
69
+ - !ruby/object:Gem::Dependency
70
+ name: rdoc
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '4.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '4.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: hoe
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.16'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.16'
97
+ description: sports - sport data structures for matches, scores, leagues, seasons,
98
+ rounds, groups, teams, clubs and more
99
+ email: opensport@googlegroups.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files:
103
+ - CHANGELOG.md
104
+ - Manifest.txt
105
+ - README.md
106
+ files:
107
+ - CHANGELOG.md
108
+ - Manifest.txt
109
+ - README.md
110
+ - Rakefile
111
+ - lib/sports.rb
112
+ - lib/sports/config.rb
113
+ - lib/sports/match_parser_csv.rb
114
+ - lib/sports/match_status_parser.rb
115
+ - lib/sports/name_helper.rb
116
+ - lib/sports/season.rb
117
+ - lib/sports/structs/country.rb
118
+ - lib/sports/structs/goal.rb
119
+ - lib/sports/structs/group.rb
120
+ - lib/sports/structs/league.rb
121
+ - lib/sports/structs/match.rb
122
+ - lib/sports/structs/matchlist.rb
123
+ - lib/sports/structs/round.rb
124
+ - lib/sports/structs/standings.rb
125
+ - lib/sports/structs/team.rb
126
+ - lib/sports/structs/team_usage.rb
127
+ - lib/sports/version.rb
128
+ - test/helper.rb
129
+ - test/test_clubs.rb
130
+ - test/test_csv_reader.rb
131
+ - test/test_match.rb
132
+ - test/test_match_status_parser.rb
133
+ - test/test_name_helper.rb
134
+ - test/test_season.rb
135
+ homepage: https://github.com/sportdb/sport.db
136
+ licenses:
137
+ - Public Domain
138
+ metadata: {}
139
+ post_install_message:
140
+ rdoc_options:
141
+ - "--main"
142
+ - README.md
143
+ require_paths:
144
+ - lib
145
+ required_ruby_version: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: 2.2.2
150
+ required_rubygems_version: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
155
+ requirements: []
156
+ rubyforge_project:
157
+ rubygems_version: 2.5.2
158
+ signing_key:
159
+ specification_version: 4
160
+ summary: sports - sport data structures for matches, scores, leagues, seasons, rounds,
161
+ groups, teams, clubs and more
162
+ test_files: []