Class: Spackler::Player
- Inherits:
-
Object
- Object
- Spackler::Player
- Defined in:
- lib/spackler.rb
Constant Summary collapse
- SPECIALS =
[]
- LAST_ONE_NAMES =
for names where last 1 name = lname
["Olazabal", "Jimenez", "Johnson", "Singh", "Thompson", "Hicks", "Wan"]
- LAST_TWO_NAMES =
for names where last 2 names = lname
["V", "IV", "III", "II", "Jr.", "Jr", "Sr.", "Sr", "Jong", "Pelt", "Broeck", "Jonge", "Hed"]
Instance Attribute Summary collapse
-
#fname ⇒ Object
readonly
lname may include spaces to accomodate “Berganio Jr.”, “Love III”, etc.
-
#full_name ⇒ Object
readonly
lname may include spaces to accomodate “Berganio Jr.”, “Love III”, etc.
-
#lname ⇒ Object
readonly
lname may include spaces to accomodate “Berganio Jr.”, “Love III”, etc.
Instance Method Summary collapse
- #clip_am(lname) ⇒ Object
- #flatten(name) ⇒ Object
-
#initialize(scraped_full_name) ⇒ Player
constructor
A new instance of Player.
- #parse_clean_name ⇒ Object
- #translate_crazy_name_char(special_char) ⇒ Object
Constructor Details
#initialize(scraped_full_name) ⇒ Player
Returns a new instance of Player.
25 26 27 28 29 30 |
# File 'lib/spackler.rb', line 25 def initialize(scraped_full_name) @full_name = scraped_full_name @fname = "" @lname = "" self.parse_clean_name end |
Instance Attribute Details
#fname ⇒ Object (readonly)
lname may include spaces to accomodate “Berganio Jr.”, “Love III”, etc
32 33 34 |
# File 'lib/spackler.rb', line 32 def fname @fname end |
#full_name ⇒ Object (readonly)
lname may include spaces to accomodate “Berganio Jr.”, “Love III”, etc
32 33 34 |
# File 'lib/spackler.rb', line 32 def full_name @full_name end |
#lname ⇒ Object (readonly)
lname may include spaces to accomodate “Berganio Jr.”, “Love III”, etc
32 33 34 |
# File 'lib/spackler.rb', line 32 def lname @lname end |
Instance Method Details
#clip_am(lname) ⇒ Object
47 48 49 50 51 52 |
# File 'lib/spackler.rb', line 47 def clip_am lname #remove (a) from last name re = /\(a\)/ lname.gsub(re, "") #get rid of (a) after name and return end |
#flatten(name) ⇒ Object
38 39 40 41 42 43 44 45 |
# File 'lib/spackler.rb', line 38 def flatten name #flatten special characters to non-freakish ASCII. E.g. different than straight flatten, make é = e (not e'') re = /\(\w{2}\)/ processed = name.gsub(re, "") #strip out course in parens E.g. Davis Love III (PB) processed = processed.gsub(/,/, "") #get rid of commas in name processed end |
#parse_clean_name ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/spackler.rb', line 54 def parse_clean_name # take full name and break it apart based on some simple rules # later may use Bayesian techniques names = self.flatten(@full_name).split(" ") if names.length == 2 #normal @fname = flatten(names[0]) @lname = clip_am(flatten(names[1])) if @lname == "Waston" @lname = "Watson" #correcting pga.com's misspelling end elsif names.length == 3 # check if any parts of the scraped_full_name match with CONSTANTS names.each do |nm| if LAST_ONE_NAMES.include?(nm) #one of the names indicates it's a 3 part name @lname = flatten(names[2]) @fname = flatten(names[0]) + " " + flatten(names[1]) elsif LAST_TWO_NAMES.include?(nm) #one of the names indicates it's a jr, III name @lname = flatten(names[1]) + " " + flatten(names[2]) @fname = flatten(names[0]) else #some untrapped 3 part name that doesn't match either case #split as if it's LAST_TWO_NAMES @lname = flatten(names[2]) + " " + flatten(names[1]) @fname = flatten(names[0]) end end end end |
#translate_crazy_name_char(special_char) ⇒ Object
34 35 36 |
# File 'lib/spackler.rb', line 34 def translate_crazy_name_char(special_char) special_char.strip() #really just a stub for now end |