sportdb-formats 0.1.0 → 0.1.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.
- checksums.yaml +4 -4
- data/Manifest.txt +3 -0
- data/lib/sportdb/formats.rb +1 -1
- data/lib/sportdb/formats/season_utils.rb +116 -0
- data/lib/sportdb/formats/version.rb +1 -1
- data/test/test_datafile_match.rb +65 -0
- data/test/test_season_utils.rb +29 -0
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 10455b8b9b5c3220b15a503f299a5ca50bcf22a7
|
4
|
+
data.tar.gz: 4abaa2dd8badbc94de069ae3fffe0268021ab6c1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4f456deb7833358bbf748a50c37da56cf546736f345e7c57db88ac14aab1ff8ebd01a1c2c0c7f52cc58be3d1da666663009fb481a04bee1059f7e10913a8eafe
|
7
|
+
data.tar.gz: 30a07f60a25daf252a5c0cc6cc0862640790dc6cef93defb28f3c48425e1ee20d3525f9c6b3037559c7abbe13d638caba3d7135e53b99c7065e2546c413c7a65
|
data/Manifest.txt
CHANGED
@@ -5,8 +5,11 @@ Rakefile
|
|
5
5
|
lib/sportdb/formats.rb
|
6
6
|
lib/sportdb/formats/datafile.rb
|
7
7
|
lib/sportdb/formats/outline_reader.rb
|
8
|
+
lib/sportdb/formats/season_utils.rb
|
8
9
|
lib/sportdb/formats/version.rb
|
9
10
|
test/helper.rb
|
10
11
|
test/test_csv_reader.rb
|
11
12
|
test/test_datafile.rb
|
13
|
+
test/test_datafile_match.rb
|
12
14
|
test/test_outline_reader.rb
|
15
|
+
test/test_season_utils.rb
|
data/lib/sportdb/formats.rb
CHANGED
@@ -0,0 +1,116 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
|
4
|
+
module SeasonHelper ## use Helpers why? why not?
|
5
|
+
def prev( season )
|
6
|
+
## todo: add 1964-1965 format too!!!
|
7
|
+
if season =~ /^(\d{4})-(\d{2})$/ ## season format is 1964-65
|
8
|
+
fst = $1.to_i - 1
|
9
|
+
snd = (100 + $2.to_i - 1) % 100 ## note: add 100 to turn 00 => 99
|
10
|
+
"%4d-%02d" % [fst,snd]
|
11
|
+
elsif season =~ /^(\d{4})$/
|
12
|
+
fst = $1.to_i - 1
|
13
|
+
"%4d" % [fst]
|
14
|
+
else
|
15
|
+
puts "*** !!!! wrong season format >>#{season}<<; exit; sorry"
|
16
|
+
exit 1
|
17
|
+
end
|
18
|
+
end # method prev
|
19
|
+
|
20
|
+
|
21
|
+
def key( basename )
|
22
|
+
if basename =~ /^(\d{4})[\-\/](\d{4})$/ ## e.g. 2011-2012 or 2011/2012 => 2011/12
|
23
|
+
"%4d/%02d" % [$1.to_i, $2.to_i % 100]
|
24
|
+
elsif basename =~ /^(\d{4})[\-\/](\d{2})$/ ## e.g. 2011-12 or 2011/12 => 2011/12
|
25
|
+
"#{$1}/#{$2}"
|
26
|
+
elsif basename =~ /^(\d{4})$/
|
27
|
+
$1
|
28
|
+
else
|
29
|
+
puts "*** !!!! wrong season format >>#{basename}<<; exit; sorry"
|
30
|
+
exit 1
|
31
|
+
end
|
32
|
+
end # method key
|
33
|
+
|
34
|
+
|
35
|
+
def directory( season, format: nil )
|
36
|
+
## todo: find better names for formats - why? why not?:
|
37
|
+
## long | archive | decade(?) => 1980s/1988-89, 2010s/2017-18, ...
|
38
|
+
## short | std(?) => 1988-89, 2017-18, ...
|
39
|
+
|
40
|
+
## convert season name to "standard" season name for directory
|
41
|
+
|
42
|
+
## todo/fix: move to parse / validate season (for (re)use)!!!! - why? why not?
|
43
|
+
if season =~ /^(\d{4})[\-\/](\d{4})$/ ## e.g. 2011-2012 or 2011/2012 => 2011-12
|
44
|
+
years = [$1.to_i, $2.to_i]
|
45
|
+
elsif season =~ /^(\d{4})[\-\/](\d{2})$/ ## e.g. 2011-12 or 2011/12 => 2011-12
|
46
|
+
years = [$1.to_i, $1.to_i+1]
|
47
|
+
## note: check that season end year is (always) season start year + 1
|
48
|
+
if ($1.to_i+1) % 100 != $2.to_i
|
49
|
+
puts "*** !!!! wrong season format >>#{season}<<; season end year MUST (always) equal season start year + 1; exit; sorry"
|
50
|
+
exit 1
|
51
|
+
end
|
52
|
+
elsif season =~ /^(\d{4})$/
|
53
|
+
years = [$1.to_i]
|
54
|
+
else
|
55
|
+
puts "*** !!!! wrong season format >>#{season}<<; exit; sorry"
|
56
|
+
exit 1
|
57
|
+
end
|
58
|
+
|
59
|
+
|
60
|
+
if ['l', 'long', 'archive' ].include?( format.to_s ) ## note: allow passing in of symbol to e.g. 'long' or :long
|
61
|
+
if years.size == 2
|
62
|
+
"%3d0s/%4d-%02d" % [years[0] / 10, years[0], years[1] % 100] ## e.g. 2000s/2001-02
|
63
|
+
else ## assume size 1 (single year season)
|
64
|
+
"%3d0s/%4d" % [years[0] / 10, years[0]]
|
65
|
+
end
|
66
|
+
else ## default 'short' format / fallback
|
67
|
+
if years.size == 2
|
68
|
+
"%4d-%02d" % [years[0], years[1] % 100] ## e.g. 2001-02
|
69
|
+
else ## assume size 1 (single year season)
|
70
|
+
"%4d" % years[0]
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end # method directory
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
def start_year( season ) ## get start year
|
78
|
+
## convert season name to "standard" season name for directory
|
79
|
+
|
80
|
+
## todo/check: just return year from first for chars - keep it simple - why? why not?
|
81
|
+
if season =~ /^(\d{4})[\-\/](\d{4})$/ ## e.g. 2011-2010 or 2011/2011 => 2011-10
|
82
|
+
$1
|
83
|
+
elsif season =~ /^(\d{4})[\-\/](\d{2})$/
|
84
|
+
$1
|
85
|
+
elsif season =~ /^(\d{4})$/
|
86
|
+
$1
|
87
|
+
else
|
88
|
+
puts "*** !!!! wrong season format >>#{season}<<; exit; sorry"
|
89
|
+
exit 1
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def end_year( season ) ## get end year
|
94
|
+
## convert season name to "standard" season name for directory
|
95
|
+
if season =~ /^(\d{4})[\-\/](\d{4})$/ ## e.g. 2011-2010 or 2011/2011 => 2011-10
|
96
|
+
$2
|
97
|
+
elsif season =~ /^(\d{4})[\-\/](\d{2})$/
|
98
|
+
## note: assume second year is always +1
|
99
|
+
## todo/fix: add assert/check - why? why not?
|
100
|
+
## eg. 1999-00 => 2000 or 1899-00 => 1900
|
101
|
+
($1.to_i+1).to_s
|
102
|
+
elsif season =~ /^(\d{4})$/
|
103
|
+
$1
|
104
|
+
else
|
105
|
+
puts "*** !!!! wrong season format >>#{season}<<; exit; sorry"
|
106
|
+
exit 1
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end # module SeasonHelper
|
110
|
+
|
111
|
+
|
112
|
+
module SeasonUtils
|
113
|
+
extend SeasonHelper
|
114
|
+
## lets you use SeasonHelper as "globals" eg.
|
115
|
+
## SeasonUtils.prev( season ) etc.
|
116
|
+
end # SeasonUtils
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
###
|
4
|
+
# to run use
|
5
|
+
# ruby -I ./lib -I ./test test/test_datafile_match.rb
|
6
|
+
|
7
|
+
|
8
|
+
require 'helper'
|
9
|
+
|
10
|
+
class TestDatafileMatch < MiniTest::Test
|
11
|
+
|
12
|
+
def match_clubs( txt ) Datafile::CLUBS_REGEX.match( txt ); end
|
13
|
+
def match_clubs_wiki( txt ) Datafile::CLUBS_WIKI_REGEX.match( txt ); end
|
14
|
+
def match_leagues( txt ) Datafile::LEAGUES_REGEX.match( txt ); end
|
15
|
+
def match_conf( txt ) Datafile::CONF_REGEX.match( txt ); end
|
16
|
+
|
17
|
+
|
18
|
+
CLUBS_TXT = [ ## with country code
|
19
|
+
'de.clubs.txt',
|
20
|
+
'deutschland/de.clubs.txt',
|
21
|
+
## without country code
|
22
|
+
'europe/de-deutschland/clubs.txt',
|
23
|
+
'de-deutschland/clubs.txt',
|
24
|
+
'deutschland/clubs.txt',
|
25
|
+
'clubs.txt' ]
|
26
|
+
|
27
|
+
CLUBS_WIKI_TXT = [ ## with country code
|
28
|
+
'de.clubs.wiki.txt',
|
29
|
+
'deutschland/de.clubs.wiki.txt',
|
30
|
+
## without country code
|
31
|
+
'europe/de-deutschland/clubs.wiki.txt',
|
32
|
+
'de-deutschland/clubs.wiki.txt',
|
33
|
+
'deutschland/clubs.wiki.txt',
|
34
|
+
'clubs.wiki.txt' ]
|
35
|
+
|
36
|
+
LEAGUES_TXT = [ 'europe/england/leagues.txt',
|
37
|
+
'england/leagues.txt',
|
38
|
+
'leagues.txt' ]
|
39
|
+
|
40
|
+
CONF_TXT = [ 'austria/archives/2000s/2001-02/.conf.txt',
|
41
|
+
'austria/2019-20/.conf.txt',
|
42
|
+
'.conf.txt' ]
|
43
|
+
|
44
|
+
|
45
|
+
def test_match_clubs
|
46
|
+
CLUBS_TXT.each { |txt| assert match_clubs( txt ) }
|
47
|
+
|
48
|
+
CLUBS_WIKI_TXT.each { |txt| assert !match_clubs( txt ) }
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_match_clubs_wiki
|
52
|
+
CLUBS_WIKI_TXT.each { |txt| assert match_clubs_wiki( txt ) }
|
53
|
+
|
54
|
+
CLUBS_TXT.each { |txt| assert !match_clubs_wiki( txt ) }
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_match_leagues
|
58
|
+
LEAGUES_TXT.each { |txt| assert match_leagues( txt ) }
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_match_conf
|
62
|
+
CONF_TXT.each { |txt| assert match_conf( txt ) }
|
63
|
+
end
|
64
|
+
|
65
|
+
end # class TestFindDatafileMatch
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
###
|
4
|
+
# to run use
|
5
|
+
# ruby -I ./lib -I ./test test/test_season_utils.rb
|
6
|
+
|
7
|
+
|
8
|
+
require 'helper'
|
9
|
+
|
10
|
+
class TestSeasonUtils < MiniTest::Test
|
11
|
+
|
12
|
+
def test_directory
|
13
|
+
assert_equal '2010-11', SeasonUtils.directory( '2010-11' )
|
14
|
+
assert_equal '2010-11', SeasonUtils.directory( '2010-2011' )
|
15
|
+
assert_equal '2010-11', SeasonUtils.directory( '2010/11' )
|
16
|
+
assert_equal '2010-11', SeasonUtils.directory( '2010/2011' )
|
17
|
+
assert_equal '2010', SeasonUtils.directory( '2010' )
|
18
|
+
|
19
|
+
assert_equal '2010s/2010-11', SeasonUtils.directory( '2010-11', format: 'long' )
|
20
|
+
assert_equal '2010s/2010-11', SeasonUtils.directory( '2010-2011', format: 'long' )
|
21
|
+
assert_equal '2010s/2010', SeasonUtils.directory( '2010', format: 'long' )
|
22
|
+
|
23
|
+
assert_equal '1999-00', SeasonUtils.directory( '1999-00' )
|
24
|
+
assert_equal '1999-00', SeasonUtils.directory( '1999-2000' )
|
25
|
+
assert_equal '1990s/1999-00', SeasonUtils.directory( '1999-00', format: 'long' )
|
26
|
+
assert_equal '1990s/1999-00', SeasonUtils.directory( '1999-2000', format: 'long' )
|
27
|
+
end # method test_diretory
|
28
|
+
|
29
|
+
end # class TestSeasonlUtils
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sportdb-formats
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gerald Bauer
|
@@ -82,11 +82,14 @@ files:
|
|
82
82
|
- lib/sportdb/formats.rb
|
83
83
|
- lib/sportdb/formats/datafile.rb
|
84
84
|
- lib/sportdb/formats/outline_reader.rb
|
85
|
+
- lib/sportdb/formats/season_utils.rb
|
85
86
|
- lib/sportdb/formats/version.rb
|
86
87
|
- test/helper.rb
|
87
88
|
- test/test_csv_reader.rb
|
88
89
|
- test/test_datafile.rb
|
90
|
+
- test/test_datafile_match.rb
|
89
91
|
- test/test_outline_reader.rb
|
92
|
+
- test/test_season_utils.rb
|
90
93
|
homepage: https://github.com/sportdb/sport.db
|
91
94
|
licenses:
|
92
95
|
- Public Domain
|