class Cekresi::Parser
Public Class Methods
parse(container_result)
click to toggle source
# File lib/cekresi/cekresi_parser.rb, line 3 def self.parse(container_result) expedition_name = container_result.find(".top_title").text tracking_number_info = container_result.all(".table-responsive") delivery_info = tracking_number_info[0] delivery_status_data, delivery_info_data = {}, {} delivery_info.all("tr").each do |item| hash_el = item.text.split(" : ") key_name = parse_info_attribute(hash_el) delivery_info_data[key_name.to_sym] = hash_el.last end tracking_number_info.each_with_index do |tracking_number, index| unless index.zero? key_name = tracking_number.find("b").text.tr(" ","_").downcase tracking_data = [] tracking_number.all('tr').each_with_index do |list, tracking_number_index| unless tracking_number_index.zero? tracking_list_data = list.all('td') tracking_data << {shipment_date: tracking_list_data[0].text, shipment_location: tracking_list_data[1].text, shipment_status: tracking_list_data[2].text} end end delivery_status_data[key_name.to_sym] = tracking_data end end return {status: :ok, expedition_name: expedition_name, delivery_info: delivery_info_data, delivery_status: delivery_status_data} end
parse_info_attribute(info)
click to toggle source
# File lib/cekresi/cekresi_parser.rb, line 33 def self.parse_info_attribute(info) new_key = info.first.tr(" ","_").downcase case new_key when "no_resi" new_key = 'tracking_number' when 'dikirim_tanggal' new_key = 'sent_time' when 'dikirim_oleh' new_key = 'sender' when 'dikirim_ke' new_key = 'receiver' end new_key end