lib/avmtrf1/forponto/parsers/espelho/day_node.rb
# frozen_string_literal: true require_relative 'sub_node' module Avmtrf1 module Forponto module Parsers class Espelho < ::Aranha::Parsers::Html::Item class DayNode < SubNode include MethodsAsFields FIELDS = %w[date marcacoes summaries].freeze SUMMARIES_XPATH = './following-sibling::tr[1]//font[@class="fontetabptodados"]/p/text()' def initialize(*args) super @summaries = [] end def add_summary(summary) @summaries << summary end def date_string node.at_xpath('.//font[@class="fontetabptodata"]/text()').to_s end def date m = %r{(\d{2})/(\d{2})/(\d{4})}.match(date_string) return Date.new(m[3].to_i, m[2].to_i, m[1].to_i) if m raise "Date not found at \"#{date_string}\"" end def marcacoes_string node.at_xpath('.//font[@class="fontetabptomarc"]/text()').to_s end def marcacoes marcacoes_string.scan(/\d{2}:\d{2}/) end def summaries @summaries.map(&:data) end end end end end end