Class: Lakes::Texas

Inherits:
Object show all
Includes:
Helper
Defined in:
lib/lakes/texas.rb,
lib/lakes/texas/share_lunker.rb,
lib/lakes/texas/water_data_parser.rb,
lib/lakes/texas/lake_records_parser.rb,
lib/lakes/texas/fishing_report_parser.rb,
lib/lakes/texas/water_conditions_parser.rb,
lib/lakes/texas/lake_characteristics_parser.rb

Defined Under Namespace

Classes: FishingReportParser, LakeCharacteristicsParser, LakeRecordsParser, ShareLunker, WaterConditionsParser, WaterDataParser

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Helper

#cleanup_data, #cleanup_raw_text, #convert_relative_href, #http_get, #process_data_table

Constructor Details

#initializeTexas

Returns a new instance of Texas.



12
13
14
# File 'lib/lakes/texas.rb', line 12

def initialize
  @lake_data = {}
end

Instance Attribute Details

#lake_dataObject (readonly)

Returns the value of attribute lake_data.



10
11
12
# File 'lib/lakes/texas.rb', line 10

def lake_data
  @lake_data
end

Instance Method Details

#all_detailsObject



16
17
18
19
20
21
22
23
# File 'lib/lakes/texas.rb', line 16

def all_details
  result = []
  list.each do |lake_name|
    result << get_details(lake_name)
    sleep(1)
  end
  result
end

#get_details(lake_name) ⇒ Object



44
45
46
47
48
49
50
51
# File 'lib/lakes/texas.rb', line 44

def get_details(lake_name)
  puts "getting details for #{lake_name}"
  list
  data = lake_data[lake_name]
  raise 'Lake not found' if data.nil?
  data[:name] = lake_name
  parse_lake_details(data)
end

#listObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/lakes/texas.rb', line 25

def list
  return @lake_data.keys unless @lake_data.empty?

  base_url = 'https://tpwd.texas.gov/fishboat/fish/recreational/lakes/'
  content = http_get("#{base_url}lakelist.phtml")
  html_doc = Nokogiri::HTML(content)
  
  # remove elements not needed to make parsing easier
  html_doc.search('div.announce, div.alert, div#bottomwrapper').each do |src|
    src.remove
  end

  html_doc.search('div#maincontent ul li a').each do |lake_html|
    lake_name = cleanup_data(lake_html.text)
    @lake_data[lake_name] = { details_uri: "#{base_url}#{lake_html[:href]}" }
  end
  @lake_data.keys
end