class GAShikomi::Renderer

Attributes

options[R]
records[R]

Public Class Methods

new(records, options) click to toggle source
param

Array records

param

Hash oprions

# File lib/ga_shikomi/renderer.rb, line 10
def initialize(records, options)
  @records = records
  @options = options
end

Public Instance Methods

csv(result, opts = {}) click to toggle source
param

Array result

param

Hash opts

# File lib/ga_shikomi/renderer.rb, line 154
def csv(result, opts = {})
  require 'csv'

  fields = opts[:fields] || result.first.keys.sort

  puts CSV.generate {|csv|
    csv << fields if options[:with_csv_header]
    result.each {|r|
      csv << fields.map {|f| r[f]}
    }
  }
end
pick_id_and_description(item) click to toggle source
param

Hash item

return

Hash

# File lib/ga_shikomi/renderer.rb, line 113
def pick_id_and_description(item)
  {
    'id'          => item['id'],
    'description' => item['attributes']['description']
  }
end
pick_id_name_type_and_details(item) click to toggle source
param

Hash item

return

Hash

# File lib/ga_shikomi/renderer.rb, line 124
def pick_id_name_type_and_details(item)
    {
      'id'      => item['id'],
      'name'    => item['name'],
      'type'    => item['type'],
      'details' => item["#{small_camelize(item['type'])}Details"]
    }
end
raw() click to toggle source
# File lib/ga_shikomi/renderer.rb, line 16
def raw
  pp records
end
render(fields, &preprocess) click to toggle source
param

Array

param

Proc preprocess

# File lib/ga_shikomi/renderer.rb, line 24
def render(fields, &preprocess)
  if options[:format] == 'original'
    pp records
  else
    result = records.map {|e| preprocess.call(e)}

    case options[:format]
    when  'csv'
      csv(result, :fields => fields)
    else
      table(result, :fields => fields)
    end
  end
end
render_accounts() click to toggle source
# File lib/ga_shikomi/renderer.rb, line 54
def render_accounts
  render(%w(id permissions)) {|record|
    {
      'id'          => record['id'],
      'permissions' => record['permissions']['effective'].join(',')
    }
  }
end
render_filters() click to toggle source
# File lib/ga_shikomi/renderer.rb, line 85
def render_filters
  render(%w(id name type details)) {|record|
    pick_id_name_type_and_details(record)
  }
end
render_ga() click to toggle source
# File lib/ga_shikomi/renderer.rb, line 39
def render_ga
  case records.size
  when 1
    render(records.first.keys) {|record| record}
  else
    fields = [''] + records['totalsForAllResults'].keys

    @records = records['rows'].map {|row|
      Hash[*fields.zip(row).flatten]
    } + [records['totalsForAllResults'].merge('' => 'totalsForAllResults')]

    render(fields) {|record| record}
  end
end
render_goals() click to toggle source
# File lib/ga_shikomi/renderer.rb, line 91
def render_goals
  render(%w(id name type details)) {|record|
    pick_id_name_type_and_details(record)
  }
end
render_metadata() click to toggle source
# File lib/ga_shikomi/renderer.rb, line 97
def render_metadata
  render(%w(id description)) {|record| pick_id_and_description(record)}
end
render_profiles() click to toggle source
# File lib/ga_shikomi/renderer.rb, line 74
def render_profiles
  render(%w(id name websiteUrl permissions)) {|record|
    {
      'id'          => record['id'],
      'name'        => record['name'],
      'websiteUrl'  => record['websiteUrl'],
      'permissions' => record['permissions']['effective'].join(',')
    }
  }
end
render_properties() click to toggle source
# File lib/ga_shikomi/renderer.rb, line 63
def render_properties
  render(%w(id name websiteUrl permissions)) {|record|
    {
      'id'          => record['id'],
      'name'        => record['name'],
      'websiteUrl'  => record['websiteUrl'],
      'permissions' => record['permissions']['effective'].join(',')
    }
  }
end
render_segments() click to toggle source
# File lib/ga_shikomi/renderer.rb, line 101
def render_segments
  fields = %w(id segmentId name type)

  render(fields) {|record|
    Hash[*fields.map {|f| [f, record[f]]}.flatten]
  }
end
small_camelize(str) click to toggle source
param

String str

return

String str

# File lib/ga_shikomi/renderer.rb, line 137
def small_camelize(str)
  str.split('_').map {|e| e.capitalize}.tap {|a| a.first.downcase!}.join
end
table(result, opts = {}) click to toggle source
param

Array result

param

Hash opts

# File lib/ga_shikomi/renderer.rb, line 145
def table(result, opts = {})
  require 'hirb'
  puts Hirb::Helpers::AutoTable.render(result, opts)
end