Class: Spackler::Player

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

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

#fnameObject (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_nameObject (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

#lnameObject (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_nameObject



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