Class: MyRepresentatives::QLD::WebShow

Inherits:
Object
  • Object
show all
Includes:
Guessable
Defined in:
lib/my_representatives/qld/web_show.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Guessable

#guess_first, #guess_gender, #guess_last, #guess_preferred, #guess_title

Constructor Details

#initialize(url) ⇒ WebShow

Returns a new instance of WebShow.



8
9
10
11
12
13
14
# File 'lib/my_representatives/qld/web_show.rb', line 8

def initialize(url)
  @logger = Logger.new(STDOUT)
  raise MyRepresentatives::InvalidURLError unless url && url.is_a?(String)
  @url = url
  fetch_document
  raise MyRepresentatives::NokogiriDocumentPropertiesError unless test_document_for_validity
end

Instance Attribute Details

#documentObject

Returns the value of attribute document.



6
7
8
# File 'lib/my_representatives/qld/web_show.rb', line 6

def document
  @document
end

#loggerObject

Returns the value of attribute logger.



6
7
8
# File 'lib/my_representatives/qld/web_show.rb', line 6

def logger
  @logger
end

#urlObject

Returns the value of attribute url.



6
7
8
# File 'lib/my_representatives/qld/web_show.rb', line 6

def url
  @url
end

Instance Method Details

#electorate_nameObject



90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/my_representatives/qld/web_show.rb', line 90

def electorate_name
  begin
    regex = /^\s+([A-Z].+?) -/
    text = @document.at('strong:contains("Electorate")').parent.text.strip
    match = text.match(regex)
    if match
      match[1]
    else
      nil
    end
  rescue NoMethodError
    nil
  end
end

#emailObject



75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/my_representatives/qld/web_show.rb', line 75

def email
  begin
    regex = /Email: ([email protected])/
    text = @document.at('strong:contains("Email:")').parent.text.strip
    match = text.match(regex)
    if match
      match[1]
    else
      nil
    end
  rescue NoMethodError
    nil
  end
end

#first_nameObject



36
37
38
39
40
41
42
# File 'lib/my_representatives/qld/web_show.rb', line 36

def first_name
  begin
    guess_first(formal_name)
  rescue NoMethodError
    nil
  end
end

#formal_nameObject



20
21
22
23
24
25
26
# File 'lib/my_representatives/qld/web_show.rb', line 20

def formal_name
  begin
    @document.css(".member-heading").css("h1").text
  rescue NoMethodError
    nil
  end
end

#homepage_urlObject



16
17
18
# File 'lib/my_representatives/qld/web_show.rb', line 16

def homepage_url
  @url
end

#image_urlObject



120
121
122
123
124
125
126
# File 'lib/my_representatives/qld/web_show.rb', line 120

def image_url
  begin
    "https://www.parliament.qld.gov.au"+@document.css("div.member-bio").css("img").attr('src').value.gsub("../../..","")
  rescue NoMethodError
    nil
  end
end

#last_nameObject



52
53
54
55
56
57
58
# File 'lib/my_representatives/qld/web_show.rb', line 52

def last_name
  begin
    guess_last(formal_name)
  rescue NoMethodError
    nil
  end
end

#party_nameObject



105
106
107
108
109
110
111
112
113
114
115
116
117
118
# File 'lib/my_representatives/qld/web_show.rb', line 105

def party_name
  begin
    regex = /^\s+([A-Z].+?)$/
    text = @document.at('strong:contains("Party")').parent.text.strip
    match = text.match(regex)
    if match
      match[1].gsub(/ (\(.+?\))/,"")
    else
      nil
    end
  rescue NoMethodError
    nil
  end
end

#phoneObject



60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/my_representatives/qld/web_show.rb', line 60

def phone
  begin
    regex = /Phone: (.+?)[Fax|Email]/
    text = @document.at('strong:contains("Phone:")').parent.text.strip
    match = text.match(regex)
    if match
      match[1]
    else
      nil
    end
  rescue NoMethodError
    nil
  end
end

#preferred_nameObject



44
45
46
47
48
49
50
# File 'lib/my_representatives/qld/web_show.rb', line 44

def preferred_name
  begin
    guess_preferred(formal_name)
  rescue NoMethodError
    nil
  end
end

#titleObject



28
29
30
31
32
33
34
# File 'lib/my_representatives/qld/web_show.rb', line 28

def title
  begin
    guess_title(formal_name)
  rescue NoMethodError
    nil
  end
end