module UniteParser

require 'debugger'

Constants

VERSION

Public Class Methods

parse(xlsx_file) click to toggle source

Parse impressions and clicks for each valid Adtag campaign in the XLSX file

# File lib/unite_parser.rb, line 6
def self.parse(xlsx_file)
  xlsx = Roo::Excelx.new xlsx_file
  {}.tap do |campaigns|
    xlsx.first_row.upto(xlsx.last_row) do |line|
      name = xlsx.cell line, 'A'
      if campaign_id = extract_campaign_id_from(name)
        impressions = xlsx.cell line, 'B'
        clicks = xlsx.cell line, 'C'
        campaigns[campaign_id] = {impressions: impressions, clicks: clicks}
      end
    end
  end
end

Private Class Methods

extract_campaign_id_from(name) click to toggle source

Return campaign_id if name specifies an Adtag campaign

# File lib/unite_parser.rb, line 23
def self.extract_campaign_id_from(name)
  name.match %r{^Top Spin: (\d+).+} do |match|
    match[1]
  end
end