sportdb 1.6.10 → 1.6.11
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.
- data/Manifest.txt +2 -0
- data/bin/sportdb +0 -0
- data/lib/sportdb.rb +2 -0
- data/lib/sportdb/console.rb +11 -3
- data/lib/sportdb/deleter.rb +3 -1
- data/lib/sportdb/models/event.rb +10 -3
- data/lib/sportdb/models/goal.rb +2 -2
- data/lib/sportdb/models/race.rb +6 -6
- data/lib/sportdb/models/record.rb +13 -0
- data/lib/sportdb/models/run.rb +11 -0
- data/lib/sportdb/models/track.rb +40 -0
- data/lib/sportdb/reader.rb +136 -0
- data/lib/sportdb/schema.rb +38 -8
- data/lib/sportdb/stats.rb +2 -1
- data/lib/sportdb/utils.rb +47 -2
- data/lib/sportdb/version.rb +1 -1
- metadata +15 -15
data/Manifest.txt
CHANGED
|
@@ -31,9 +31,11 @@ lib/sportdb/models/league.rb
|
|
|
31
31
|
lib/sportdb/models/person.rb
|
|
32
32
|
lib/sportdb/models/prop.rb
|
|
33
33
|
lib/sportdb/models/race.rb
|
|
34
|
+
lib/sportdb/models/record.rb
|
|
34
35
|
lib/sportdb/models/region.rb
|
|
35
36
|
lib/sportdb/models/roster.rb
|
|
36
37
|
lib/sportdb/models/round.rb
|
|
38
|
+
lib/sportdb/models/run.rb
|
|
37
39
|
lib/sportdb/models/season.rb
|
|
38
40
|
lib/sportdb/models/team.rb
|
|
39
41
|
lib/sportdb/models/track.rb
|
data/bin/sportdb
CHANGED
|
File without changes
|
data/lib/sportdb.rb
CHANGED
|
@@ -43,9 +43,11 @@ require 'sportdb/models/league'
|
|
|
43
43
|
require 'sportdb/models/person'
|
|
44
44
|
require 'sportdb/models/prop'
|
|
45
45
|
require 'sportdb/models/race'
|
|
46
|
+
require 'sportdb/models/record'
|
|
46
47
|
require 'sportdb/models/region'
|
|
47
48
|
require 'sportdb/models/roster'
|
|
48
49
|
require 'sportdb/models/round'
|
|
50
|
+
require 'sportdb/models/run'
|
|
49
51
|
require 'sportdb/models/season'
|
|
50
52
|
require 'sportdb/models/team'
|
|
51
53
|
require 'sportdb/models/track'
|
data/lib/sportdb/console.rb
CHANGED
|
@@ -14,14 +14,22 @@ require 'yaml'
|
|
|
14
14
|
|
|
15
15
|
## shortcuts for models
|
|
16
16
|
|
|
17
|
+
Badge = SportDb::Models::Badge
|
|
17
18
|
Event = SportDb::Models::Event
|
|
18
|
-
Team = SportDb::Models::Team
|
|
19
19
|
Game = SportDb::Models::Game
|
|
20
|
+
Goal = SportDb::Models::Goal
|
|
20
21
|
Group = SportDb::Models::Group
|
|
22
|
+
League = SportDb::Models::League
|
|
23
|
+
Person = SportDb::Models::Person
|
|
24
|
+
Race = SportDb::Models::Race
|
|
25
|
+
Record = SportDb::Models::Record
|
|
26
|
+
Roster = SportDb::Models::Roster
|
|
21
27
|
Round = SportDb::Models::Round
|
|
28
|
+
Run = SportDb::Models::Run
|
|
22
29
|
Season = SportDb::Models::Season
|
|
23
|
-
|
|
24
|
-
|
|
30
|
+
Team = SportDb::Models::Team
|
|
31
|
+
Track = SportDb::Models::Track
|
|
32
|
+
|
|
25
33
|
|
|
26
34
|
Tag = WorldDb::Models::Tag
|
|
27
35
|
Tagging = WorldDb::Models::Tagging
|
data/lib/sportdb/deleter.rb
CHANGED
|
@@ -11,6 +11,7 @@ module SportDb
|
|
|
11
11
|
# for now delete all tables
|
|
12
12
|
|
|
13
13
|
Goal.delete_all
|
|
14
|
+
Record.delete_all
|
|
14
15
|
|
|
15
16
|
Game.delete_all
|
|
16
17
|
Event.delete_all
|
|
@@ -19,7 +20,8 @@ module SportDb
|
|
|
19
20
|
GroupTeam.delete_all
|
|
20
21
|
Round.delete_all
|
|
21
22
|
Badge.delete_all
|
|
22
|
-
|
|
23
|
+
|
|
24
|
+
Run.delete_all
|
|
23
25
|
Race.delete_all
|
|
24
26
|
Roster.delete_all
|
|
25
27
|
|
data/lib/sportdb/models/event.rb
CHANGED
|
@@ -32,14 +32,21 @@ class Event < ActiveRecord::Base
|
|
|
32
32
|
def title
|
|
33
33
|
league.title
|
|
34
34
|
end
|
|
35
|
-
|
|
35
|
+
|
|
36
36
|
def full_title # includes season (e.g. year)
|
|
37
37
|
"#{league.title} #{season.title}"
|
|
38
38
|
end
|
|
39
|
-
|
|
39
|
+
|
|
40
|
+
|
|
40
41
|
#####################
|
|
41
42
|
## convenience helper for text parser/reader
|
|
42
43
|
|
|
44
|
+
###
|
|
45
|
+
## fix: use/add to_teams_table( rec ) for reuse
|
|
46
|
+
#
|
|
47
|
+
## @known_teams = @event.known_teams_table
|
|
48
|
+
|
|
49
|
+
|
|
43
50
|
def known_teams_table
|
|
44
51
|
|
|
45
52
|
## build known teams table w/ synonyms e.g.
|
|
@@ -61,7 +68,7 @@ class Event < ActiveRecord::Base
|
|
|
61
68
|
titles = titles.sort { |left,right| right.length <=> left.length }
|
|
62
69
|
|
|
63
70
|
## escape for regex plus allow subs for special chars/accents
|
|
64
|
-
titles = titles.map { |title| title_esc_regex( title ) }
|
|
71
|
+
titles = titles.map { |title| TextUtils.title_esc_regex( title ) }
|
|
65
72
|
|
|
66
73
|
titles << team.code if team.code.present?
|
|
67
74
|
titles << team.key
|
data/lib/sportdb/models/goal.rb
CHANGED
data/lib/sportdb/models/race.rb
CHANGED
|
@@ -3,12 +3,12 @@ module SportDb::Models
|
|
|
3
3
|
|
|
4
4
|
class Race < ActiveRecord::Base
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
belongs_to :track
|
|
7
|
+
belongs_to :event
|
|
8
|
+
|
|
9
|
+
### fix/todo: add runs/records (records - join table - run/race+person)
|
|
10
|
+
## has_many :runs # e.g. Test Drive, Quali 1, Quali 2, Quali 3, Race
|
|
11
|
+
## run - has_many records? - run_stats? - what name to use?
|
|
12
12
|
|
|
13
13
|
end # class Race
|
|
14
14
|
|
data/lib/sportdb/models/track.rb
CHANGED
|
@@ -6,6 +6,46 @@ class Track < ActiveRecord::Base
|
|
|
6
6
|
|
|
7
7
|
belongs_to :country, :class_name => 'WorldDb::Models::Country', :foreign_key => 'country_id'
|
|
8
8
|
|
|
9
|
+
#####################
|
|
10
|
+
## convenience helper for text parser/reader
|
|
11
|
+
|
|
12
|
+
### fix: move to event!!! (e.g. scoped by event)
|
|
13
|
+
|
|
14
|
+
def self.known_tracks_table
|
|
15
|
+
|
|
16
|
+
## build known tracks table w/ synonyms e.g.
|
|
17
|
+
#
|
|
18
|
+
# [[ 'wolfsbrug', [ 'VfL Wolfsburg' ]],
|
|
19
|
+
# [ 'augsburg', [ 'FC Augsburg', 'Augi2', 'Augi3' ]],
|
|
20
|
+
# [ 'stuttgart', [ 'VfB Stuttgart' ]] ]
|
|
21
|
+
|
|
22
|
+
known_tracks = []
|
|
23
|
+
|
|
24
|
+
Track.all.each_with_index do |track,index|
|
|
25
|
+
|
|
26
|
+
titles = []
|
|
27
|
+
titles << track.title
|
|
28
|
+
titles += track.synonyms.split('|') if track.synonyms.present?
|
|
29
|
+
|
|
30
|
+
## NB: sort here by length (largest goes first - best match)
|
|
31
|
+
# exclude code and key (key should always go last)
|
|
32
|
+
titles = titles.sort { |left,right| right.length <=> left.length }
|
|
33
|
+
|
|
34
|
+
## escape for regex plus allow subs for special chars/accents
|
|
35
|
+
titles = titles.map { |title| TextUtils.title_esc_regex( title ) }
|
|
36
|
+
|
|
37
|
+
known_tracks << [ track.key, titles ]
|
|
38
|
+
|
|
39
|
+
### fix:
|
|
40
|
+
## plain logger
|
|
41
|
+
|
|
42
|
+
LogUtils::Logger.root.debug " Track[#{index+1}] #{track.key} >#{titles.join('|')}<"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
known_tracks
|
|
46
|
+
end # method known_tracks_table
|
|
47
|
+
|
|
48
|
+
|
|
9
49
|
|
|
10
50
|
def self.create_or_update_from_values( new_attributes, values )
|
|
11
51
|
|
data/lib/sportdb/reader.rb
CHANGED
|
@@ -89,6 +89,12 @@ class Reader
|
|
|
89
89
|
load_persons( name )
|
|
90
90
|
elsif name =~ /^teams/ # e.g. teams.txt in formula1.db
|
|
91
91
|
load_teams( name )
|
|
92
|
+
elsif name =~ /\/races/ # e.g. 2013/races.txt in formula1.db
|
|
93
|
+
load_races( name )
|
|
94
|
+
elsif name =~ /\/squads/ || name =~ /\/rosters/ # e.g. 2013/squads.txt in formula1.db
|
|
95
|
+
load_rosters( name )
|
|
96
|
+
elsif name =~ /\/([0-9]{2})-/
|
|
97
|
+
load_records( name ) # e.g. 2013/04-gp-monaco.txt in formula1.db
|
|
92
98
|
elsif name =~ /^seasons/
|
|
93
99
|
load_seasons( name )
|
|
94
100
|
elsif name =~ /^leagues/
|
|
@@ -372,6 +378,136 @@ class Reader
|
|
|
372
378
|
end
|
|
373
379
|
|
|
374
380
|
|
|
381
|
+
|
|
382
|
+
def load_records( name )
|
|
383
|
+
path = "#{include_path}/#{name}.txt"
|
|
384
|
+
|
|
385
|
+
logger.info "parsing data '#{name}' (#{path})..."
|
|
386
|
+
|
|
387
|
+
### SportDB.lang.lang = LangChecker.new.analyze( name, include_path )
|
|
388
|
+
|
|
389
|
+
reader = LineReader.new( path )
|
|
390
|
+
|
|
391
|
+
## for now: use all tracks (later filter/scope by event)
|
|
392
|
+
# @known_tracks = Track.known_tracks_table
|
|
393
|
+
|
|
394
|
+
## fix: add @known_teams - for now; use teams (not scoped by event)
|
|
395
|
+
|
|
396
|
+
load_records_worker( reader )
|
|
397
|
+
|
|
398
|
+
Prop.create_from_fixture!( name, path )
|
|
399
|
+
end
|
|
400
|
+
|
|
401
|
+
def load_records_worker( reader )
|
|
402
|
+
|
|
403
|
+
reader.each_line do |line|
|
|
404
|
+
logger.debug " line: >#{line}<"
|
|
405
|
+
|
|
406
|
+
### fix: use new find_leading_pos!
|
|
407
|
+
# pos = find_game_pos!( line ) # alias -> rename to find_pos! or better use find_leading_pos!( line )
|
|
408
|
+
|
|
409
|
+
# match_person!( line )
|
|
410
|
+
|
|
411
|
+
# match_teams!( line )
|
|
412
|
+
|
|
413
|
+
record_attribs = {
|
|
414
|
+
# pos: pos,
|
|
415
|
+
# team_key: team_key # fix: use team_id
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
pp record_attribs
|
|
419
|
+
end # lines.each
|
|
420
|
+
|
|
421
|
+
end # method load_record_worker
|
|
422
|
+
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
def load_rosters( name )
|
|
426
|
+
path = "#{include_path}/#{name}.txt"
|
|
427
|
+
|
|
428
|
+
logger.info "parsing data '#{name}' (#{path})..."
|
|
429
|
+
|
|
430
|
+
### SportDB.lang.lang = LangChecker.new.analyze( name, include_path )
|
|
431
|
+
|
|
432
|
+
reader = LineReader.new( path )
|
|
433
|
+
|
|
434
|
+
## for now: use all tracks (later filter/scope by event)
|
|
435
|
+
# @known_tracks = Track.known_tracks_table
|
|
436
|
+
|
|
437
|
+
## fix: add @known_teams - for now; use teams (not scoped by event)
|
|
438
|
+
|
|
439
|
+
load_rosters_worker( reader )
|
|
440
|
+
|
|
441
|
+
Prop.create_from_fixture!( name, path )
|
|
442
|
+
|
|
443
|
+
end
|
|
444
|
+
|
|
445
|
+
def load_rosters_worker( reader )
|
|
446
|
+
|
|
447
|
+
reader.each_line do |line|
|
|
448
|
+
logger.debug " line: >#{line}<"
|
|
449
|
+
|
|
450
|
+
### fix: use new find_leading_pos!
|
|
451
|
+
pos = find_game_pos!( line ) # alias -> rename to find_pos! or better use find_leading_pos!( line )
|
|
452
|
+
|
|
453
|
+
# match_person!( line )
|
|
454
|
+
|
|
455
|
+
# match_teams!( line )
|
|
456
|
+
|
|
457
|
+
roster_attribs = {
|
|
458
|
+
pos: pos,
|
|
459
|
+
# team_key: team_key # fix: use team_id
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
pp roster_attribs
|
|
463
|
+
end # lines.each
|
|
464
|
+
|
|
465
|
+
end # method load_rosters_worker
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
def load_races( name )
|
|
470
|
+
path = "#{include_path}/#{name}.txt"
|
|
471
|
+
|
|
472
|
+
logger.info "parsing data '#{name}' (#{path})..."
|
|
473
|
+
|
|
474
|
+
### SportDB.lang.lang = LangChecker.new.analyze( name, include_path )
|
|
475
|
+
|
|
476
|
+
reader = LineReader.new( path )
|
|
477
|
+
|
|
478
|
+
## for now: use all tracks (later filter/scope by event)
|
|
479
|
+
@known_tracks = Track.known_tracks_table
|
|
480
|
+
|
|
481
|
+
load_races_worker( reader )
|
|
482
|
+
|
|
483
|
+
Prop.create_from_fixture!( name, path )
|
|
484
|
+
|
|
485
|
+
end
|
|
486
|
+
|
|
487
|
+
def load_races_worker( reader )
|
|
488
|
+
|
|
489
|
+
reader.each_line do |line|
|
|
490
|
+
logger.debug " line: >#{line}<"
|
|
491
|
+
|
|
492
|
+
### fix: use new find_leading_pos!
|
|
493
|
+
pos = find_game_pos!( line ) # alias -> rename to find_pos! or better use find_leading_pos!( line )
|
|
494
|
+
|
|
495
|
+
match_track!( line )
|
|
496
|
+
track_key = find_track!( line )
|
|
497
|
+
date = find_date!( line )
|
|
498
|
+
|
|
499
|
+
race_attribs = {
|
|
500
|
+
pos: pos,
|
|
501
|
+
track_key: track_key, # fix: use track_id
|
|
502
|
+
start_at: date
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
pp race_attribs
|
|
506
|
+
end # lines.each
|
|
507
|
+
|
|
508
|
+
end # method load_races_worker
|
|
509
|
+
|
|
510
|
+
|
|
375
511
|
def load_teams( name, more_values={} )
|
|
376
512
|
path = "#{include_path}/#{name}.txt"
|
|
377
513
|
|
data/lib/sportdb/schema.rb
CHANGED
|
@@ -6,9 +6,9 @@ class CreateDb < ActiveRecord::Migration
|
|
|
6
6
|
def up
|
|
7
7
|
|
|
8
8
|
create_table :teams do |t|
|
|
9
|
+
t.string :key, :null => false # import/export key
|
|
9
10
|
t.string :title, :null => false
|
|
10
11
|
t.string :title2
|
|
11
|
-
t.string :key, :null => false # import/export key
|
|
12
12
|
t.string :code # make it not null? - three letter code (short title)
|
|
13
13
|
t.string :synonyms # comma separated list of synonyms
|
|
14
14
|
t.references :country, :null => false
|
|
@@ -72,20 +72,48 @@ end
|
|
|
72
72
|
|
|
73
73
|
# join table -> event(season+league)+track
|
|
74
74
|
create_table :races do |t| # e.g. Formula 1 race (Grand Prix Monaco) or Alpine Ski race (Downhill Lake Louise)
|
|
75
|
-
t.references :track
|
|
76
|
-
t.references :event
|
|
75
|
+
t.references :track, :null => false
|
|
76
|
+
t.references :event, :null => false
|
|
77
77
|
t.integer :pos, :null => false # Race #1,#2,#3,#4 etc.
|
|
78
|
-
|
|
78
|
+
|
|
79
|
+
## todo: add auto-created key (for import/export) e.g.
|
|
80
|
+
|
|
81
|
+
t.datetime :start_at
|
|
82
|
+
t.timestamps
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
create_table :runs do |t|
|
|
86
|
+
t.references :race, :null => false
|
|
87
|
+
t.integer :pos, :null => false
|
|
88
|
+
|
|
79
89
|
t.datetime :start_at
|
|
80
90
|
t.timestamps
|
|
81
91
|
end
|
|
82
92
|
|
|
93
|
+
# join table -> race+person or run+person
|
|
94
|
+
create_table :records do |t| # use TimeRecord? instead of simple record
|
|
95
|
+
t.references :race # optional either race or run references
|
|
96
|
+
t.references :run
|
|
97
|
+
t.references :person, :null => false
|
|
98
|
+
t.integer :pos # 1,2,3, etc or 0
|
|
99
|
+
t.boolean :completed, :null => false, :default => true # completed race - find better name?
|
|
100
|
+
t.string :state # find a better name? e.g. retired, e.g.
|
|
101
|
+
t.string :comment # find a better name ? e.g. collision damage (if ret) for formula 1
|
|
102
|
+
t.time :time
|
|
103
|
+
t.string :timeline # e.g. + 0:45.343 or +1 lap
|
|
104
|
+
t.integer :laps # laps counter for formula1
|
|
105
|
+
|
|
106
|
+
t.timestamps
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
|
|
83
110
|
# join table -> person+team+event(season+league)
|
|
84
111
|
create_table :rosters do |t| # use squads as an alternative name? why? why not??
|
|
85
|
-
t.references :person
|
|
86
|
-
t.references :team
|
|
87
|
-
t.references :event
|
|
112
|
+
t.references :person, :null => false
|
|
113
|
+
t.references :team, :null => false
|
|
114
|
+
t.references :event # make required?
|
|
88
115
|
t.integer :pos, :null => false
|
|
116
|
+
|
|
89
117
|
t.timestamps
|
|
90
118
|
end
|
|
91
119
|
|
|
@@ -97,6 +125,7 @@ create_table :events do |t|
|
|
|
97
125
|
t.date :start_at, :null => false # NB: only use date (w/o time)
|
|
98
126
|
t.date :end_at # make it required??? # NB: only use date (w/o time)
|
|
99
127
|
t.boolean :team3, :null => false, :default => true ## e.g. Champions League has no 3rd place (only 1st and 2nd/final)
|
|
128
|
+
|
|
100
129
|
t.timestamps
|
|
101
130
|
end
|
|
102
131
|
|
|
@@ -113,6 +142,7 @@ create_table :rounds do |t|
|
|
|
113
142
|
t.boolean :knockout, :null => false, :default => false
|
|
114
143
|
t.date :start_at, :null => false # NB: only use date (w/o time)
|
|
115
144
|
t.date :end_at # todo: make it required e.g. :null => false # NB: only use date (w/o time)
|
|
145
|
+
|
|
116
146
|
t.timestamps
|
|
117
147
|
end
|
|
118
148
|
|
|
@@ -130,6 +160,7 @@ add_index :groups, :event_id # fk event_id index
|
|
|
130
160
|
|
|
131
161
|
|
|
132
162
|
create_table :games do |t|
|
|
163
|
+
t.string :key # import/export key
|
|
133
164
|
t.references :round, :null => false
|
|
134
165
|
t.integer :pos, :null => false
|
|
135
166
|
t.references :group # note: group is optional
|
|
@@ -161,7 +192,6 @@ create_table :games do |t|
|
|
|
161
192
|
### todo> find a better name (toto is not international/english?)
|
|
162
193
|
## rename to score12x or pt12x or result12x
|
|
163
194
|
t.string :toto12x # 1,2,X,nil calculate on save
|
|
164
|
-
t.string :key # import/export key
|
|
165
195
|
|
|
166
196
|
t.timestamps
|
|
167
197
|
end
|
data/lib/sportdb/stats.rb
CHANGED
|
@@ -12,7 +12,8 @@ module SportDb
|
|
|
12
12
|
puts " #{Game.count} games"
|
|
13
13
|
puts " #{Badge.count} badges"
|
|
14
14
|
|
|
15
|
-
puts " #{Track.count} tracks / #{Race.count} races (track+event recs)"
|
|
15
|
+
puts " #{Track.count} tracks / #{Race.count} races (track+event recs) / #{Run.count} runs"
|
|
16
|
+
puts " #{Record.count} records (race|run+person recs)"
|
|
16
17
|
puts " #{Person.count} persons / #{Roster.count} rosters (person+team+event recs)"
|
|
17
18
|
puts " #{Goal.count} goals (person+game recs)"
|
|
18
19
|
|
data/lib/sportdb/utils.rb
CHANGED
|
@@ -350,7 +350,52 @@ module SportDb::FixtureHelpers
|
|
|
350
350
|
values = rec[1]
|
|
351
351
|
match_team_worker!( line, key, values )
|
|
352
352
|
end # each known_teams
|
|
353
|
-
end # method
|
|
354
|
-
|
|
353
|
+
end # method match_teams!
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
def find_track!( line )
|
|
360
|
+
regex = /@@oo([^@]+?)oo@@/ # e.g. everything in @@ .... @@ (use non-greedy +? plus all chars but not @, that is [^@])
|
|
361
|
+
|
|
362
|
+
if line =~ regex
|
|
363
|
+
value = "#{$1}"
|
|
364
|
+
logger.debug " track#{index}: >#{value}<"
|
|
365
|
+
|
|
366
|
+
line.sub!( regex, "[TRACK]" )
|
|
367
|
+
|
|
368
|
+
return $1
|
|
369
|
+
else
|
|
370
|
+
return nil
|
|
371
|
+
end
|
|
372
|
+
end
|
|
373
|
+
|
|
374
|
+
def match_track_worker!( line, key, values )
|
|
375
|
+
values.each do |value|
|
|
376
|
+
## nb: \b does NOT include space or newline for word boundry (only alphanums e.g. a-z0-9)
|
|
377
|
+
## (thus add it, allows match for Benfica Lis. for example - note . at the end)
|
|
378
|
+
|
|
379
|
+
## check add $ e.g. (\b| |\t|$) does this work? - check w/ Benfica Lis.$
|
|
380
|
+
regex = /\b#{value}(\b| |\t|$)/ # wrap with world boundry (e.g. match only whole words e.g. not wac in wacker)
|
|
381
|
+
if line =~ regex
|
|
382
|
+
logger.debug " match for track >#{key}< >#{value}<"
|
|
383
|
+
# make sure @@oo{key}oo@@ doesn't match itself with other key e.g. wacker, wac, etc.
|
|
384
|
+
line.sub!( regex, "@@oo#{key}oo@@ " ) # NB: add one space char at end
|
|
385
|
+
return true # break out after first match (do NOT continue)
|
|
386
|
+
end
|
|
387
|
+
end
|
|
388
|
+
return false
|
|
389
|
+
end
|
|
390
|
+
|
|
391
|
+
## todo/fix: pass in known_tracks as a parameter? why? why not?
|
|
392
|
+
def match_track!( line )
|
|
393
|
+
@known_tracks.each do |rec|
|
|
394
|
+
key = rec[0]
|
|
395
|
+
values = rec[1]
|
|
396
|
+
match_track_worker!( line, key, values )
|
|
397
|
+
end # each known_tracks
|
|
398
|
+
end # method match_tracks!
|
|
399
|
+
|
|
355
400
|
|
|
356
401
|
end # module SportDb::FixtureHelpers
|
data/lib/sportdb/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: sportdb
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.6.
|
|
4
|
+
version: 1.6.11
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,11 +9,11 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2013-06-
|
|
12
|
+
date: 2013-06-05 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: worlddb
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &73622090 !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ~>
|
|
@@ -21,10 +21,10 @@ dependencies:
|
|
|
21
21
|
version: '1.7'
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
24
|
+
version_requirements: *73622090
|
|
25
25
|
- !ruby/object:Gem::Dependency
|
|
26
26
|
name: commander
|
|
27
|
-
requirement: &
|
|
27
|
+
requirement: &73621870 !ruby/object:Gem::Requirement
|
|
28
28
|
none: false
|
|
29
29
|
requirements:
|
|
30
30
|
- - ~>
|
|
@@ -32,38 +32,36 @@ dependencies:
|
|
|
32
32
|
version: 4.1.3
|
|
33
33
|
type: :runtime
|
|
34
34
|
prerelease: false
|
|
35
|
-
version_requirements: *
|
|
35
|
+
version_requirements: *73621870
|
|
36
36
|
- !ruby/object:Gem::Dependency
|
|
37
37
|
name: rdoc
|
|
38
|
-
requirement: &
|
|
38
|
+
requirement: &73621650 !ruby/object:Gem::Requirement
|
|
39
39
|
none: false
|
|
40
40
|
requirements:
|
|
41
41
|
- - ~>
|
|
42
42
|
- !ruby/object:Gem::Version
|
|
43
|
-
version: '
|
|
43
|
+
version: '3.10'
|
|
44
44
|
type: :development
|
|
45
45
|
prerelease: false
|
|
46
|
-
version_requirements: *
|
|
46
|
+
version_requirements: *73621650
|
|
47
47
|
- !ruby/object:Gem::Dependency
|
|
48
48
|
name: hoe
|
|
49
|
-
requirement: &
|
|
49
|
+
requirement: &73621430 !ruby/object:Gem::Requirement
|
|
50
50
|
none: false
|
|
51
51
|
requirements:
|
|
52
52
|
- - ~>
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '3.
|
|
54
|
+
version: '3.3'
|
|
55
55
|
type: :development
|
|
56
56
|
prerelease: false
|
|
57
|
-
version_requirements: *
|
|
57
|
+
version_requirements: *73621430
|
|
58
58
|
description: sportdb - sport.db command line tool
|
|
59
59
|
email: opensport@googlegroups.com
|
|
60
60
|
executables:
|
|
61
61
|
- sportdb
|
|
62
62
|
extensions: []
|
|
63
63
|
extra_rdoc_files:
|
|
64
|
-
- History.md
|
|
65
64
|
- Manifest.txt
|
|
66
|
-
- README.md
|
|
67
65
|
files:
|
|
68
66
|
- History.md
|
|
69
67
|
- Manifest.txt
|
|
@@ -98,9 +96,11 @@ files:
|
|
|
98
96
|
- lib/sportdb/models/person.rb
|
|
99
97
|
- lib/sportdb/models/prop.rb
|
|
100
98
|
- lib/sportdb/models/race.rb
|
|
99
|
+
- lib/sportdb/models/record.rb
|
|
101
100
|
- lib/sportdb/models/region.rb
|
|
102
101
|
- lib/sportdb/models/roster.rb
|
|
103
102
|
- lib/sportdb/models/round.rb
|
|
103
|
+
- lib/sportdb/models/run.rb
|
|
104
104
|
- lib/sportdb/models/season.rb
|
|
105
105
|
- lib/sportdb/models/team.rb
|
|
106
106
|
- lib/sportdb/models/track.rb
|
|
@@ -148,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
148
148
|
version: '0'
|
|
149
149
|
requirements: []
|
|
150
150
|
rubyforge_project: sportdb
|
|
151
|
-
rubygems_version: 1.
|
|
151
|
+
rubygems_version: 1.8.17
|
|
152
152
|
signing_key:
|
|
153
153
|
specification_version: 3
|
|
154
154
|
summary: sportdb - sport.db command line tool
|