sportdb-config 0.4.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/config/leagues/fr.txt +9 -9
- data/config/leagues/gr.txt +7 -7
- data/config/leagues/sco.txt +19 -19
- data/config/world/eng.txt +162 -162
- data/lib/sportdb/config/club_reader.rb +278 -278
- data/lib/sportdb/config/clubs.rb +7 -0
- data/lib/sportdb/config/config.rb +123 -123
- data/lib/sportdb/config/league.rb +118 -118
- data/lib/sportdb/config/league_reader.rb +65 -65
- data/lib/sportdb/config/league_utils.rb +24 -24
- data/lib/sportdb/config/variants.rb +91 -81
- data/lib/sportdb/config/version.rb +1 -1
- data/test/test_club_reader.rb +150 -150
- data/test/test_league_reader.rb +54 -54
- data/test/test_league_utils.rb +46 -46
- data/test/test_season_utils.rb +29 -29
- data/test/test_variants.rb +14 -0
- metadata +12 -6
@@ -1,65 +1,65 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
|
4
|
-
module SportDb
|
5
|
-
module Import
|
6
|
-
|
7
|
-
class LeagueReader
|
8
|
-
|
9
|
-
def self.read( path )
|
10
|
-
txt = File.open( path, 'r:utf-8' ).read
|
11
|
-
parse( txt )
|
12
|
-
end
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
SEASON_REGEX = /\[
|
17
|
-
(?<season>
|
18
|
-
\d{4}
|
19
|
-
(-\d{2,4})?
|
20
|
-
)
|
21
|
-
\]/x
|
22
|
-
|
23
|
-
def self.parse( txt )
|
24
|
-
hash = {}
|
25
|
-
season = '*' ## use '*' for default/latest season
|
26
|
-
|
27
|
-
txt.each_line do |line|
|
28
|
-
line = line.strip
|
29
|
-
|
30
|
-
next if line.empty?
|
31
|
-
next if line.start_with?( '#' ) ## skip comments too
|
32
|
-
|
33
|
-
## strip inline comments too
|
34
|
-
line = line.sub( /#.*/, '' ).strip
|
35
|
-
|
36
|
-
pp line
|
37
|
-
|
38
|
-
|
39
|
-
if (m=line.match( SEASON_REGEX ))
|
40
|
-
season = m[:season]
|
41
|
-
else
|
42
|
-
key_line, values_line = line.split( '=>' )
|
43
|
-
values = values_line.split( ',' )
|
44
|
-
|
45
|
-
## remove leading and trailing spaces
|
46
|
-
key_line = key_line.strip
|
47
|
-
values = values.map { |value| value.strip }
|
48
|
-
pp values
|
49
|
-
|
50
|
-
league_key = key_line
|
51
|
-
league_basename = values[0]
|
52
|
-
|
53
|
-
hash[season] ||= {}
|
54
|
-
hash[season][league_key] = league_basename
|
55
|
-
end
|
56
|
-
end
|
57
|
-
hash
|
58
|
-
end # method read
|
59
|
-
|
60
|
-
end ## class LeagueReader
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
end ## module Import
|
65
|
-
end ## module SportDb
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
|
4
|
+
module SportDb
|
5
|
+
module Import
|
6
|
+
|
7
|
+
class LeagueReader
|
8
|
+
|
9
|
+
def self.read( path )
|
10
|
+
txt = File.open( path, 'r:utf-8' ).read
|
11
|
+
parse( txt )
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
SEASON_REGEX = /\[
|
17
|
+
(?<season>
|
18
|
+
\d{4}
|
19
|
+
(-\d{2,4})?
|
20
|
+
)
|
21
|
+
\]/x
|
22
|
+
|
23
|
+
def self.parse( txt )
|
24
|
+
hash = {}
|
25
|
+
season = '*' ## use '*' for default/latest season
|
26
|
+
|
27
|
+
txt.each_line do |line|
|
28
|
+
line = line.strip
|
29
|
+
|
30
|
+
next if line.empty?
|
31
|
+
next if line.start_with?( '#' ) ## skip comments too
|
32
|
+
|
33
|
+
## strip inline comments too
|
34
|
+
line = line.sub( /#.*/, '' ).strip
|
35
|
+
|
36
|
+
pp line
|
37
|
+
|
38
|
+
|
39
|
+
if (m=line.match( SEASON_REGEX ))
|
40
|
+
season = m[:season]
|
41
|
+
else
|
42
|
+
key_line, values_line = line.split( '=>' )
|
43
|
+
values = values_line.split( ',' )
|
44
|
+
|
45
|
+
## remove leading and trailing spaces
|
46
|
+
key_line = key_line.strip
|
47
|
+
values = values.map { |value| value.strip }
|
48
|
+
pp values
|
49
|
+
|
50
|
+
league_key = key_line
|
51
|
+
league_basename = values[0]
|
52
|
+
|
53
|
+
hash[season] ||= {}
|
54
|
+
hash[season][league_key] = league_basename
|
55
|
+
end
|
56
|
+
end
|
57
|
+
hash
|
58
|
+
end # method read
|
59
|
+
|
60
|
+
end ## class LeagueReader
|
61
|
+
|
62
|
+
|
63
|
+
|
64
|
+
end ## module Import
|
65
|
+
end ## module SportDb
|
@@ -1,24 +1,24 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
|
4
|
-
module LeagueHelper
|
5
|
-
def basename( league, country:, season: nil )
|
6
|
-
## e.g. eng-england, 2011-12, 1 returns 1-premierleague
|
7
|
-
##
|
8
|
-
## allow country code or (repo) package name
|
9
|
-
## e.g. eng-england or eng
|
10
|
-
## de-deutschland or de etc.
|
11
|
-
|
12
|
-
leagues = SportDb::Import.config.leagues
|
13
|
-
|
14
|
-
result = leagues.basename( league, country: country, season: season )
|
15
|
-
|
16
|
-
##
|
17
|
-
# note: if no mapping / nothing found return league e.g. 1, 2, 3, 3a, 3b, cup(?), etc.
|
18
|
-
result ? result : league
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
module LeagueUtils
|
23
|
-
extend LeagueHelper
|
24
|
-
end
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
|
4
|
+
module LeagueHelper
|
5
|
+
def basename( league, country:, season: nil )
|
6
|
+
## e.g. eng-england, 2011-12, 1 returns 1-premierleague
|
7
|
+
##
|
8
|
+
## allow country code or (repo) package name
|
9
|
+
## e.g. eng-england or eng
|
10
|
+
## de-deutschland or de etc.
|
11
|
+
|
12
|
+
leagues = SportDb::Import.config.leagues
|
13
|
+
|
14
|
+
result = leagues.basename( league, country: country, season: season )
|
15
|
+
|
16
|
+
##
|
17
|
+
# note: if no mapping / nothing found return league e.g. 1, 2, 3, 3a, 3b, cup(?), etc.
|
18
|
+
result ? result : league
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
module LeagueUtils
|
23
|
+
extend LeagueHelper
|
24
|
+
end
|
@@ -1,81 +1,91 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module SportDb
|
4
|
-
module Import
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
class Variant ## (spelling) variant finder / builder for names
|
9
|
-
|
10
|
-
|
11
|
-
def self.frequency_table( name ) ## todo/check: use/rename to char_frequency_table
|
12
|
-
## calculate the frequency table of letters, digits, etc.
|
13
|
-
freq = Hash.new(0)
|
14
|
-
name.each_char do |ch|
|
15
|
-
freq[ch] += 1
|
16
|
-
end
|
17
|
-
freq
|
18
|
-
end
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
'
|
30
|
-
'
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
def self.
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
end
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
end
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module SportDb
|
4
|
+
module Import
|
5
|
+
|
6
|
+
|
7
|
+
|
8
|
+
class Variant ## (spelling) variant finder / builder for names
|
9
|
+
|
10
|
+
|
11
|
+
def self.frequency_table( name ) ## todo/check: use/rename to char_frequency_table
|
12
|
+
## calculate the frequency table of letters, digits, etc.
|
13
|
+
freq = Hash.new(0)
|
14
|
+
name.each_char do |ch|
|
15
|
+
freq[ch] += 1
|
16
|
+
end
|
17
|
+
freq
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
## "simple" translation
|
22
|
+
ALPHA_SPECIALS = {
|
23
|
+
'Ä'=>'A', 'ä'=>'a',
|
24
|
+
'á'=>'a',
|
25
|
+
'à'=>'a',
|
26
|
+
'É'=>'E', 'é'=>'e',
|
27
|
+
'í'=>'i',
|
28
|
+
'ñ'=>'n',
|
29
|
+
'Ö'=>'O', 'ö'=>'o',
|
30
|
+
'ó'=>'o',
|
31
|
+
'Ü'=>'U', 'ü'=>'u',
|
32
|
+
'ú'=>'u',
|
33
|
+
'ß'=>'ss',
|
34
|
+
}
|
35
|
+
|
36
|
+
## de,at,ch translation for umlauts
|
37
|
+
ALPHA_SPECIALS_DE = {
|
38
|
+
'Ä'=>'Ae', 'ä'=>'ae',
|
39
|
+
'Ö'=>'Oe', 'ö'=>'oe',
|
40
|
+
'Ü'=>'Ue', 'ü'=>'ue',
|
41
|
+
'ß'=>'ss',
|
42
|
+
}
|
43
|
+
|
44
|
+
## add ALPHA_SPECIALS_ES - why? why not? is Espanyol catalan spelling or spanish (castillian)?
|
45
|
+
# 'ñ'=>'ny', ## e.g. Español => Espanyol
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
def self.alpha_specials_count( freq, mapping )
|
50
|
+
mapping.keys.reduce(0) do |count,ch|
|
51
|
+
count += freq[ch]
|
52
|
+
count
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.tr( name, mapping )
|
57
|
+
buf = String.new
|
58
|
+
name.each_char do |ch|
|
59
|
+
buf << if mapping[ch]
|
60
|
+
mapping[ch]
|
61
|
+
else
|
62
|
+
ch
|
63
|
+
end
|
64
|
+
end
|
65
|
+
buf
|
66
|
+
end
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
def self.find( name )
|
71
|
+
alt_names = []
|
72
|
+
|
73
|
+
freq = frequency_table( name )
|
74
|
+
|
75
|
+
if alpha_specials_count( freq, ALPHA_SPECIALS ) > 0 # check if includes äöü etc.
|
76
|
+
alt_names << tr( name, ALPHA_SPECIALS )
|
77
|
+
end
|
78
|
+
|
79
|
+
if alpha_specials_count( freq, ALPHA_SPECIALS_DE ) > 0 ## todo/fix: add / pass-in language/country code and check - why? why not?
|
80
|
+
alt_names << tr( name, ALPHA_SPECIALS_DE )
|
81
|
+
end
|
82
|
+
|
83
|
+
## todo - make uniq e.g. Preußen is Preussen, Preussen 2x
|
84
|
+
alt_names = alt_names.uniq
|
85
|
+
alt_names
|
86
|
+
end
|
87
|
+
end # Variant
|
88
|
+
|
89
|
+
|
90
|
+
end ## module Import
|
91
|
+
end ## module SportDb
|
data/test/test_club_reader.rb
CHANGED
@@ -1,150 +1,150 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
###
|
4
|
-
# to run use
|
5
|
-
# ruby -I ./lib -I ./test test/test_club_reader.rb
|
6
|
-
|
7
|
-
|
8
|
-
require 'helper'
|
9
|
-
|
10
|
-
class TestClubReader < MiniTest::Test
|
11
|
-
|
12
|
-
def test_parse_at
|
13
|
-
recs = SportDb::Import::ClubReader.parse( <<TXT )
|
14
|
-
==================================
|
15
|
-
= Austria (at)
|
16
|
-
|
17
|
-
FK Austria Wien, Wien
|
18
|
-
| Austria Vienna | Austria Wien
|
19
|
-
SK Rapid Wien, Wien
|
20
|
-
| Rapid Vienna | Rapid Wien
|
21
|
-
Wiener Sport-Club, Wien
|
22
|
-
TXT
|
23
|
-
|
24
|
-
pp recs
|
25
|
-
|
26
|
-
assert_equal 3, recs.size
|
27
|
-
assert_equal 'FK Austria Wien', recs[0].name
|
28
|
-
assert_equal 'Wien', recs[0].city
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_parse_us
|
32
|
-
recs = SportDb::Import::ClubReader.parse( <<TXT )
|
33
|
-
==================================================
|
34
|
-
= United States (us)
|
35
|
-
|
36
|
-
#######################################
|
37
|
-
# Major League Soccer (MLS) teams
|
38
|
-
|
39
|
-
Atlanta United FC, 2017, Atlanta › Georgia
|
40
|
-
| Atlanta United
|
41
|
-
Chicago Fire, 1998, Bridgeview › Illinois
|
42
|
-
FC Dallas, 1996, Frisco › Texas ## note: FC Dallas named >Dallas Burn< from 1996-2004
|
43
|
-
|
44
|
-
##################################
|
45
|
-
# Defunct / Historic
|
46
|
-
Miami Fusion (1998-2001), Fort Lauderdale › Florida
|
47
|
-
CD Chivas USA (2005-2014), Carson › California
|
48
|
-
| Chivas USA
|
49
|
-
TXT
|
50
|
-
|
51
|
-
pp recs
|
52
|
-
|
53
|
-
assert_equal 5, recs.size
|
54
|
-
assert_equal 'Atlanta United FC', recs[0].name
|
55
|
-
assert_equal 2017, recs[0].year
|
56
|
-
assert_equal 'Atlanta', recs[0].city
|
57
|
-
assert_equal ['Georgia'], recs[0].geos
|
58
|
-
end
|
59
|
-
|
60
|
-
|
61
|
-
def test_parse_years
|
62
|
-
recs = SportDb::Import::ClubReader.parse( <<TXT )
|
63
|
-
= United States (us)
|
64
|
-
FC Dallas (1996-), Frisco › Texas
|
65
|
-
Miami Fusion (1998-2001), Fort Lauderdale › Florida
|
66
|
-
CD Chivas USA (-2014), Carson › California
|
67
|
-
TXT
|
68
|
-
|
69
|
-
pp recs
|
70
|
-
|
71
|
-
assert_equal 3, recs.size
|
72
|
-
assert_equal 1996, recs[0].year
|
73
|
-
assert_equal false, recs[0].historic?
|
74
|
-
assert_equal false, recs[0].past?
|
75
|
-
|
76
|
-
assert_equal 1998, recs[1].year
|
77
|
-
assert_equal 2001, recs[1].year_end
|
78
|
-
assert_equal true, recs[1].historic?
|
79
|
-
assert_equal true, recs[1].past?
|
80
|
-
|
81
|
-
assert_equal 2014, recs[2].year_end
|
82
|
-
assert_equal true, recs[2].historic?
|
83
|
-
assert_equal true, recs[2].past?
|
84
|
-
end
|
85
|
-
|
86
|
-
def test_parse_geos
|
87
|
-
recs = SportDb::Import::ClubReader.parse( <<TXT )
|
88
|
-
= England (eng)
|
89
|
-
== Greater London
|
90
|
-
|
91
|
-
Fulham FC, 1879, @ Craven Cottage, London (Fulham) › Greater London
|
92
|
-
| Fulham | FC Fulham
|
93
|
-
Charlton Athletic FC, @ The Valley, London (Charlton) › Greater London
|
94
|
-
| Charlton | Charlton Athletic
|
95
|
-
|
96
|
-
= Deutschland (de)
|
97
|
-
== Hamburg
|
98
|
-
|
99
|
-
St. Pauli, Hamburg (St. Pauli)
|
100
|
-
TXT
|
101
|
-
|
102
|
-
pp recs
|
103
|
-
|
104
|
-
assert_equal 3, recs.size
|
105
|
-
assert_equal 'London', recs[0].city
|
106
|
-
assert_equal 'Fulham', recs[0].district
|
107
|
-
assert_equal ['Greater London'], recs[0].geos
|
108
|
-
assert_equal 'England', recs[0].country.name
|
109
|
-
assert_equal 'eng', recs[0].country.key
|
110
|
-
|
111
|
-
assert_equal 'London', recs[1].city
|
112
|
-
assert_equal 'Charlton', recs[1].district
|
113
|
-
assert_equal ['Greater London'], recs[1].geos
|
114
|
-
assert_equal 'England', recs[1].country.name
|
115
|
-
assert_equal 'eng', recs[1].country.key
|
116
|
-
|
117
|
-
assert_equal 'Hamburg', recs[2].city
|
118
|
-
assert_equal 'St. Pauli', recs[2].district
|
119
|
-
assert_equal ['Hamburg'], recs[2].geos
|
120
|
-
assert_equal 'Germany', recs[2].country.name
|
121
|
-
assert_equal 'de', recs[2].country.key
|
122
|
-
end
|
123
|
-
|
124
|
-
|
125
|
-
def test_parse_headings
|
126
|
-
recs = SportDb::Import::ClubReader.parse( <<TXT )
|
127
|
-
==============
|
128
|
-
====
|
129
|
-
===========
|
130
|
-
= Heading 1 - Austria (at)
|
131
|
-
= Heading 1 - Austria (at) ==================
|
132
|
-
== Heading 2
|
133
|
-
== Heading 2 =========
|
134
|
-
=== Heading 3
|
135
|
-
=== Heading 3 ===============
|
136
|
-
=== Heading 3 # with end-of-line comment
|
137
|
-
=== Heading 3 ## with end-of-line comment
|
138
|
-
=== Heading 3 ========= # with end-of-line comment
|
139
|
-
== Heading 2
|
140
|
-
==== Heading 4
|
141
|
-
= ?????
|
142
|
-
== ???
|
143
|
-
TXT
|
144
|
-
|
145
|
-
pp recs
|
146
|
-
|
147
|
-
assert_equal 0, recs.size
|
148
|
-
end
|
149
|
-
|
150
|
-
end # class TestClubReader
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
###
|
4
|
+
# to run use
|
5
|
+
# ruby -I ./lib -I ./test test/test_club_reader.rb
|
6
|
+
|
7
|
+
|
8
|
+
require 'helper'
|
9
|
+
|
10
|
+
class TestClubReader < MiniTest::Test
|
11
|
+
|
12
|
+
def test_parse_at
|
13
|
+
recs = SportDb::Import::ClubReader.parse( <<TXT )
|
14
|
+
==================================
|
15
|
+
= Austria (at)
|
16
|
+
|
17
|
+
FK Austria Wien, Wien
|
18
|
+
| Austria Vienna | Austria Wien
|
19
|
+
SK Rapid Wien, Wien
|
20
|
+
| Rapid Vienna | Rapid Wien
|
21
|
+
Wiener Sport-Club, Wien
|
22
|
+
TXT
|
23
|
+
|
24
|
+
pp recs
|
25
|
+
|
26
|
+
assert_equal 3, recs.size
|
27
|
+
assert_equal 'FK Austria Wien', recs[0].name
|
28
|
+
assert_equal 'Wien', recs[0].city
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_parse_us
|
32
|
+
recs = SportDb::Import::ClubReader.parse( <<TXT )
|
33
|
+
==================================================
|
34
|
+
= United States (us)
|
35
|
+
|
36
|
+
#######################################
|
37
|
+
# Major League Soccer (MLS) teams
|
38
|
+
|
39
|
+
Atlanta United FC, 2017, Atlanta › Georgia
|
40
|
+
| Atlanta United
|
41
|
+
Chicago Fire, 1998, Bridgeview › Illinois
|
42
|
+
FC Dallas, 1996, Frisco › Texas ## note: FC Dallas named >Dallas Burn< from 1996-2004
|
43
|
+
|
44
|
+
##################################
|
45
|
+
# Defunct / Historic
|
46
|
+
Miami Fusion (1998-2001), Fort Lauderdale › Florida
|
47
|
+
CD Chivas USA (2005-2014), Carson › California
|
48
|
+
| Chivas USA
|
49
|
+
TXT
|
50
|
+
|
51
|
+
pp recs
|
52
|
+
|
53
|
+
assert_equal 5, recs.size
|
54
|
+
assert_equal 'Atlanta United FC', recs[0].name
|
55
|
+
assert_equal 2017, recs[0].year
|
56
|
+
assert_equal 'Atlanta', recs[0].city
|
57
|
+
assert_equal ['Georgia'], recs[0].geos
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
def test_parse_years
|
62
|
+
recs = SportDb::Import::ClubReader.parse( <<TXT )
|
63
|
+
= United States (us)
|
64
|
+
FC Dallas (1996-), Frisco › Texas
|
65
|
+
Miami Fusion (1998-2001), Fort Lauderdale › Florida
|
66
|
+
CD Chivas USA (-2014), Carson › California
|
67
|
+
TXT
|
68
|
+
|
69
|
+
pp recs
|
70
|
+
|
71
|
+
assert_equal 3, recs.size
|
72
|
+
assert_equal 1996, recs[0].year
|
73
|
+
assert_equal false, recs[0].historic?
|
74
|
+
assert_equal false, recs[0].past?
|
75
|
+
|
76
|
+
assert_equal 1998, recs[1].year
|
77
|
+
assert_equal 2001, recs[1].year_end
|
78
|
+
assert_equal true, recs[1].historic?
|
79
|
+
assert_equal true, recs[1].past?
|
80
|
+
|
81
|
+
assert_equal 2014, recs[2].year_end
|
82
|
+
assert_equal true, recs[2].historic?
|
83
|
+
assert_equal true, recs[2].past?
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_parse_geos
|
87
|
+
recs = SportDb::Import::ClubReader.parse( <<TXT )
|
88
|
+
= England (eng)
|
89
|
+
== Greater London
|
90
|
+
|
91
|
+
Fulham FC, 1879, @ Craven Cottage, London (Fulham) › Greater London
|
92
|
+
| Fulham | FC Fulham
|
93
|
+
Charlton Athletic FC, @ The Valley, London (Charlton) › Greater London
|
94
|
+
| Charlton | Charlton Athletic
|
95
|
+
|
96
|
+
= Deutschland (de)
|
97
|
+
== Hamburg
|
98
|
+
|
99
|
+
St. Pauli, Hamburg (St. Pauli)
|
100
|
+
TXT
|
101
|
+
|
102
|
+
pp recs
|
103
|
+
|
104
|
+
assert_equal 3, recs.size
|
105
|
+
assert_equal 'London', recs[0].city
|
106
|
+
assert_equal 'Fulham', recs[0].district
|
107
|
+
assert_equal ['Greater London'], recs[0].geos
|
108
|
+
assert_equal 'England', recs[0].country.name
|
109
|
+
assert_equal 'eng', recs[0].country.key
|
110
|
+
|
111
|
+
assert_equal 'London', recs[1].city
|
112
|
+
assert_equal 'Charlton', recs[1].district
|
113
|
+
assert_equal ['Greater London'], recs[1].geos
|
114
|
+
assert_equal 'England', recs[1].country.name
|
115
|
+
assert_equal 'eng', recs[1].country.key
|
116
|
+
|
117
|
+
assert_equal 'Hamburg', recs[2].city
|
118
|
+
assert_equal 'St. Pauli', recs[2].district
|
119
|
+
assert_equal ['Hamburg'], recs[2].geos
|
120
|
+
assert_equal 'Germany', recs[2].country.name
|
121
|
+
assert_equal 'de', recs[2].country.key
|
122
|
+
end
|
123
|
+
|
124
|
+
|
125
|
+
def test_parse_headings
|
126
|
+
recs = SportDb::Import::ClubReader.parse( <<TXT )
|
127
|
+
==============
|
128
|
+
====
|
129
|
+
===========
|
130
|
+
= Heading 1 - Austria (at)
|
131
|
+
= Heading 1 - Austria (at) ==================
|
132
|
+
== Heading 2
|
133
|
+
== Heading 2 =========
|
134
|
+
=== Heading 3
|
135
|
+
=== Heading 3 ===============
|
136
|
+
=== Heading 3 # with end-of-line comment
|
137
|
+
=== Heading 3 ## with end-of-line comment
|
138
|
+
=== Heading 3 ========= # with end-of-line comment
|
139
|
+
== Heading 2
|
140
|
+
==== Heading 4
|
141
|
+
= ?????
|
142
|
+
== ???
|
143
|
+
TXT
|
144
|
+
|
145
|
+
pp recs
|
146
|
+
|
147
|
+
assert_equal 0, recs.size
|
148
|
+
end
|
149
|
+
|
150
|
+
end # class TestClubReader
|