class TreerfulScanner::Parser
Public Instance Methods
parse_place(html)
click to toggle source
# File lib/treerful_scanner/parser.rb, line 9 def parse_place(html) doc = Nokogiri::HTML(html) Place.new.tap do |place| place.name = doc.at_css('.locationTitleLeft > h3:nth-child(1)').text place.address = doc.at_css('.locationTitleLeft > p:nth-child(2)').text place.volume = doc.at_css('.capacity').text[/\d+/].to_i place.images = doc.css('img.singlePhoto').map { |element| element[:src] } end end
parse_places(html)
click to toggle source
# File lib/treerful_scanner/parser.rb, line 39 def parse_places(html) doc = Nokogiri::HTML(html) doc.css('div.canbook ul li a').map do |element| Place.new.tap do |place| place.url = element['href'] place.id = element['href'][%r{/space/(\d+)}, 1] place.name = element.at_css('h3').text place.volume = element.at_css('p').text[/\d+/].to_i place.images << element.at_css('img')['src'] end end end
parse_time_bar(html)
click to toggle source
# File lib/treerful_scanner/parser.rb, line 23 def parse_time_bar(html) doc = Nokogiri::HTML(html) result = String.new doc.css('.availability').each do |element| result << 1 if element.classes.include?('enabled') result << 0 if element.classes.include?('disabled') end start_time = doc.at_css('.availability-hours-label').text.to_i * 60 time_mapping = start_time.step(by: 30).take(result.size + 1) durations = [] result.scan(/\x01+/) do durations << Duration.new(*Regexp.last_match.offset(0).map { |id| time_mapping[id] }) end durations end
parse_time_bar_json(json)
click to toggle source
# File lib/treerful_scanner/parser.rb, line 19 def parse_time_bar_json(json) parse_time_bar(JSON.parse(json)['timeBar']) end