Class: GAShikomi::Renderer
- Inherits:
-
Object
- Object
- GAShikomi::Renderer
- Defined in:
- lib/ga_shikomi/renderer.rb
Instance Attribute Summary collapse
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#records ⇒ Object
readonly
Returns the value of attribute records.
Instance Method Summary collapse
-
#csv(result, opts = {}) ⇒ Object
- param
-
Array result [param] Hash opts.
-
#initialize(records, options) ⇒ Renderer
constructor
- param
-
Array records [param] Hash oprions.
-
#pick_id_and_description(item) ⇒ Object
- param
-
Hash item [return] Hash.
-
#pick_id_name_type_and_details(item) ⇒ Object
- param
-
Hash item [return] Hash.
- #raw ⇒ Object
-
#render(fields, &preprocess) ⇒ Object
- param
-
Array [param] Proc preprocess.
- #render_accounts ⇒ Object
- #render_filters ⇒ Object
- #render_ga ⇒ Object
- #render_goals ⇒ Object
- #render_metadata ⇒ Object
- #render_profiles ⇒ Object
- #render_properties ⇒ Object
- #render_segments ⇒ Object
-
#small_camelize(str) ⇒ Object
- param
-
String str [return] String str.
-
#table(result, opts = {}) ⇒ Object
- param
-
Array result [param] Hash opts.
Constructor Details
#initialize(records, options) ⇒ Renderer
- param
-
Array records
- param
-
Hash oprions
10 11 12 13 |
# File 'lib/ga_shikomi/renderer.rb', line 10 def initialize(records, ) @records = records @options = end |
Instance Attribute Details
#options ⇒ Object (readonly)
Returns the value of attribute options.
14 15 16 |
# File 'lib/ga_shikomi/renderer.rb', line 14 def @options end |
#records ⇒ Object (readonly)
Returns the value of attribute records.
14 15 16 |
# File 'lib/ga_shikomi/renderer.rb', line 14 def records @records end |
Instance Method Details
#csv(result, opts = {}) ⇒ Object
- param
-
Array result
- param
-
Hash opts
154 155 156 157 158 159 160 161 162 163 164 165 |
# 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 [:with_csv_header] result.each {|r| csv << fields.map {|f| r[f]} } } end |
#pick_id_and_description(item) ⇒ Object
- param
-
Hash item
- return
-
Hash
113 114 115 116 117 118 |
# 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) ⇒ Object
- param
-
Hash item
- return
-
Hash
124 125 126 127 128 129 130 131 |
# 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 ⇒ Object
16 17 18 |
# File 'lib/ga_shikomi/renderer.rb', line 16 def raw pp records end |
#render(fields, &preprocess) ⇒ Object
- param
-
Array
- param
-
Proc preprocess
24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/ga_shikomi/renderer.rb', line 24 def render(fields, &preprocess) if [:format] == 'original' pp records else result = records.map {|e| preprocess.call(e)} case [:format] when 'csv' csv(result, :fields => fields) else table(result, :fields => fields) end end end |
#render_accounts ⇒ Object
54 55 56 57 58 59 60 61 |
# 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 ⇒ Object
85 86 87 88 89 |
# 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 ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# 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 ⇒ Object
91 92 93 94 95 |
# 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 ⇒ Object
97 98 99 |
# File 'lib/ga_shikomi/renderer.rb', line 97 def render(%w(id description)) {|record| pick_id_and_description(record)} end |
#render_profiles ⇒ Object
74 75 76 77 78 79 80 81 82 83 |
# 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 ⇒ Object
63 64 65 66 67 68 69 70 71 72 |
# 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 ⇒ Object
101 102 103 104 105 106 107 |
# 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) ⇒ Object
- param
-
String str
- return
-
String str
137 138 139 |
# 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 = {}) ⇒ Object
- param
-
Array result
- param
-
Hash opts
145 146 147 148 |
# File 'lib/ga_shikomi/renderer.rb', line 145 def table(result, opts = {}) require 'hirb' puts Hirb::Helpers::AutoTable.render(result, opts) end |