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