module Kuroneko::Parser
ページからデータを抽出する
Public Class Methods
parse_page(page)
click to toggle source
ページをから情報を抽出する
@param [Mechanize::Page] page 照会結果のページ @return [Array<Kuroneko::History<Kuroneko::Status>>] 状態履歴
# File lib/kuroneko/parser.rb, line 12 def parse_page(page) page.parser.css('table.saisin').map(&method(:parse_history)) end
Also aliased as: parse
Private Class Methods
parse_history(summary)
click to toggle source
履歴情報を解析する
@param [Nokogiri::XML::Element] summary <table class=“saisin”> @return [Kuroneko::History<Kuroneko::Status>] 状態履歴
# File lib/kuroneko/parser.rb, line 24 def parse_history(summary) number, status = parse_meta(summary) statuses = summary.parent.css('table.meisai').first statuses = statuses ? parse_statuses(statuses) : [[true, status]] History.new(number, statuses.map { |s| Status.new(number, *s) }) end
parse_latest?(td)
click to toggle source
状態行の先頭要素から最新状態か判別
@param [Nokogiri::XML::Element] td 状態行の先頭の <td> @return [Boolean] 最新か否か
# File lib/kuroneko/parser.rb, line 35 def parse_latest?(td) td.css('img').attribute('src').value == '/images/nimotsu_01.gif' end
parse_meta(summary)
click to toggle source
伝票番号と最新状態名を抽出する
@param [Nokogiri::XML::Element] summary <table class=“saisin”> @return [Array] 伝票番号, 最新状態名
# File lib/kuroneko/parser.rb, line 43 def parse_meta(summary) rows = summary.css('tr') number = rows[0].css('td')[2].text.gsub(/\D/, '') status = rows[1].css('td')[2].text [number, status] end
parse_status(status)
click to toggle source
状態を解析する
@param [Nokogiri::XML::Element] status 状態情報のテーブル行 @return [Array] Kuroneko::Status
への引数
# File lib/kuroneko/parser.rb, line 54 def parse_status(status) attrs = status.css('td').to_a latest = parse_latest?(attrs.shift) [latest] + attrs.map(&:text) end
parse_statuses(table)
click to toggle source
状態履歴テーブルを解析する
@param [Nokogiri::XML::Element] table <table class=“meisai”> @return [Array<Array>] Kuroneko::Status
への引数
# File lib/kuroneko/parser.rb, line 64 def parse_statuses(table) statuses = table.css('tr').to_a statuses.shift statuses.map(&method(:parse_status)) end