Class: ItunesConnect::Report
- Inherits:
-
Object
- Object
- ItunesConnect::Report
- Includes:
- Enumerable
- Defined in:
- lib/itunes_connect/report.rb
Overview
This class transforms the raw input given in the constructor into a series of objects representing each row. You can either get the entire set of data by accessing the data
attribute, or by calling the each
method and handing it a block.
Instance Attribute Summary collapse
-
#data ⇒ Object
readonly
The report as a Hash, where the keys are country codes and the values are Hashes with the keys,
:date
,:upgrade
,:install
.
Instance Method Summary collapse
-
#each ⇒ Object
Yields each parsed data row to the given block.
-
#initialize(input) ⇒ Report
constructor
Give me an
IO
-like object (one that responds to theeach
method) and I’ll parse that sucker for you. -
#size ⇒ Object
The total number of rows in the report.
Constructor Details
#initialize(input) ⇒ Report
Give me an IO
-like object (one that responds to the each
method) and I’ll parse that sucker for you.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/itunes_connect/report.rb', line 17 def initialize(input) @data = Hash.new { |h,k| h[k] = { }} input.each do |line| line.chomp! next if line =~ /^(Provider|$)/ tokens = line.split(/\s+/) country = tokens[11] count = tokens[6].to_i @data[country][:date] = Date.parse(tokens[8]) case tokens[5].to_i when 7 @data[country][:upgrade] = count when 1 @data[country][:install] = count end end end |
Instance Attribute Details
#data ⇒ Object (readonly)
The report as a Hash, where the keys are country codes and the values are Hashes with the keys, :date
, :upgrade
, :install
.
13 14 15 |
# File 'lib/itunes_connect/report.rb', line 13 def data @data end |
Instance Method Details
#each ⇒ Object
Yields each parsed data row to the given block. Each item yielded has the following attributes:
* country
* date
* install_count
* upgrade_count
41 42 43 44 45 46 47 48 49 50 |
# File 'lib/itunes_connect/report.rb', line 41 def each # :yields: record @data.each do |country, value| if block_given? yield OpenStruct.new(:country => country, :date => value[:date], :install_count => value[:install] || 0, :upgrade_count => value[:upgrade] || 0) end end end |
#size ⇒ Object
The total number of rows in the report
53 54 55 |
# File 'lib/itunes_connect/report.rb', line 53 def size @data.size end |