Class: SportSearch::TeamSearch
- Inherits:
-
Object
- Object
- SportSearch::TeamSearch
- Defined in:
- lib/sportdb/search/sport.rb
Overview
add virtual team search ( clubs + national teams)
note: no record base!!!!!
Constant Summary collapse
- CLUB_NAME_RE =
%r{^ (?<name>[^()]+?) ## non-greedy (?: \s+ \( (?<code>[A-Z][A-Za-z]{2,3}) ## optional (country) code; support single code e.g. (A) - why? why not? \) )? $}x
Instance Method Summary collapse
-
#_find_by!(name:, league:, mods: nil) ⇒ Object
note: missing teams will get auto-created if possible only ambigious results (too many matches) raise expection!!!.
- #_find_by_v0!(name:, league:, mods: nil) ⇒ Object
-
#find_by!(name:, league:, mods: nil) ⇒ Object
todo/check: rename to/use map_by! for array version - why? why not?.
-
#initialize(clubs:, national_teams:) ⇒ TeamSearch
constructor
note: “virtual” index lets you search clubs and/or national_teams (don’t care).
Constructor Details
#initialize(clubs:, national_teams:) ⇒ TeamSearch
note: “virtual” index lets you search clubs and/or national_teams (don’t care)
286 287 288 289 |
# File 'lib/sportdb/search/sport.rb', line 286 def initialize( clubs:, national_teams: ) @clubs = clubs @national_teams = national_teams end |
Instance Method Details
#_find_by!(name:, league:, mods: nil) ⇒ Object
note: missing teams will get
auto-created if possible
only ambigious results (too many matches) raise expection!!!
321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 |
# File 'lib/sportdb/search/sport.rb', line 321 def _find_by!( name:, league:, mods: nil ) if mods && mods[ league.key ] && mods[ league.key ][ name ] mods[ league.key ][ name ] else if league.clubs? if league.intl? ## todo/fix: add intl? to ActiveRecord league!!! ### ## get country code from name ## e.g. Liverpool FC (ENG) or ## Liverpool FC (URU) etc. ## check for country code if m=CLUB_NAME_RE.match( name ) if m[:code] @clubs.find_by!( name: m[:name], country: m[:code] ) else @clubs.find!( name ) end else puts "!! PARSE ERROR - invalid club name; cannot match with CLUB_NAME_RE >#{team}<" exit 1 end else ## assume clubs in domestic/national league tournament ## note - search by league countries (may incl. more than one country ## e.g. us incl. ca, fr incl. mc, ch incl. li, etc. rec = @clubs.find_by( name: name, league: league ) if rec.nil? puts "auto-create (missing) club #{name}" ## todo/fix: add auto flag!!!! ### like in rounds!!! ## to track auto-created clubs rec = SportDb::Import::Club.new( name: name ) rec.country = league.country ## fix: country kwarg not yet supported!! pp rec end rec end else ## assume national teams (not clubs) @national_teams.find!( name ) end end end |
#_find_by_v0!(name:, league:, mods: nil) ⇒ Object
366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 |
# File 'lib/sportdb/search/sport.rb', line 366 def _find_by_v0!( name:, league:, mods: nil ) if mods && mods[ league.key ] && mods[ league.key ][ name ] mods[ league.key ][ name ] else if league.clubs? if league.intl? ## todo/fix: add intl? to ActiveRecord league!!! @clubs.find!( name ) else ## assume clubs in domestic/national league tournament ## note - search by league countries (may incl. more than one country ## e.g. us incl. ca, fr incl. mc, ch incl. li, etc. @clubs.find_by!( name: name, league: league ) end else ## assume national teams (not clubs) @national_teams.find!( name ) end end end |
#find_by!(name:, league:, mods: nil) ⇒ Object
todo/check: rename to/use map_by! for array version - why? why not?
292 293 294 295 296 297 298 299 300 301 302 |
# File 'lib/sportdb/search/sport.rb', line 292 def find_by!( name:, league:, mods: nil ) if name.is_a?( Array ) recs = [] name.each do |q| recs << _find_by!( name: q, league: league, mods: mods ) end recs else ## assume single name _find_by!( name: name, league: league, mods: mods ) end end |