ruby-reports 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 607ca468bb6cc003dd6d1982538fe62f2d58ddaf
4
- data.tar.gz: 7e58b3ca2062cf8d351a9ec201014b7e119b0857
3
+ metadata.gz: c46874a090954dd4cfdb151944ddca8ec4d268ec
4
+ data.tar.gz: b14c58cafdcd0de3abb2b974590282c8066399f3
5
5
  SHA512:
6
- metadata.gz: 996cc830263eda8dc5a8a584d72b26e0bf60bf89d3322962682e70d057ecbbb0501e1824a37e7d26a6b1682f5b5e00118acc9625fed6e4e912f6bbb57c5b144e
7
- data.tar.gz: c25b1718b161c12a77207dbb8dacbc07f2e6b6ffe27c3bc62df4063faefc19fa8e53e981d2fd7c968fa0649cc872c7a0587b826bf59a994a4bf6a082dccf5d6f
6
+ metadata.gz: 08c75fc2b96bb858f50fa77b1ffca3aa99150ad02188bb204bb241069f959f0f81722074bb8e3ab513a9dac28138c5d5a29f1e1c3711a35b71f0c55c2cf6817f
7
+ data.tar.gz: 3fdff3f60d174cbddcbd88607b1724344a54e5777612c74061f54d8bd02584100957686be9fa3dbc941a65cf1c2dfc941a4b5f0157434ebf7846633f34451b51
data/README.md CHANGED
@@ -27,13 +27,14 @@ Main concept is following:
27
27
  - (Optional) Report has ```formatter``` method. It defines what object will serve cell value formatting
28
28
 
29
29
  Example:
30
- ```ruby
30
+ ``` ruby
31
31
  class MyNiceReport < Ruby::Reports::CsvReport
32
32
  config(
33
33
  source: :fetch_data,
34
34
  expire_in: 15 * 60,
35
+ storage: Ruby::Reports::Storages::HASH,
35
36
  encoding: Ruby::Reports::CP1251,
36
- directory: File.join('/home', 'my_home', 'nice_reports')
37
+ directory: File.join('home', 'nice_reports')
37
38
  )
38
39
 
39
40
  table do
@@ -48,7 +49,7 @@ Example:
48
49
  end
49
50
 
50
51
  def query
51
- @query ||= Query.new(self)
52
+ @query ||= Query.new
52
53
  end
53
54
 
54
55
  class Formatter
@@ -61,7 +62,7 @@ Example:
61
62
  end
62
63
  end
63
64
 
64
- class Query < Ruby::Reports::Services::QueryBuilder
65
+ class Query
65
66
  def fetch_data
66
67
  [
67
68
  {id: 1, username: 'user#1', email: 'user1@reports.org', last_seen_date: '2015/06/06'},
@@ -83,6 +84,64 @@ Example:
83
84
  # 2;user#2;mailto:user2@reports.org;07.02.2015\r\n3;user#3;mailto:user3@reports.org;13.08.2015\r\n"
84
85
  ```
85
86
 
87
+ ### Advanced Usage
88
+
89
+ Here comes example of creating report with dynamicaly defined columns list:
90
+
91
+ ``` ruby
92
+
93
+ class MyDynamicCsvReport < Ruby::Reports::CsvReport
94
+ config(
95
+ source: :select_data,
96
+ storage: Ruby::Reports::Storages::HASH,
97
+ encoding: 'utf-8',
98
+ csv_options: {col_sep: ',', row_sep: "\n"},
99
+ directory: File.join(Dir.home, '.ruby-reports')
100
+ )
101
+
102
+ table do |row|
103
+ column 'First one', decorate_first(row[:first])
104
+ column 'Second', "#{row[:second]} - is second"
105
+ columns_list.each do |col|
106
+ column col.to_s, col.to_sym
107
+ end
108
+ end
109
+
110
+ class << self
111
+ attr_accessor :columns_list
112
+
113
+ def decorate_first(element)
114
+ "decorated: #{element}"
115
+ end
116
+ end
117
+
118
+ attr_reader :main_param
119
+ def initialize(param, cols = nil)
120
+ super
121
+ self.class.columns_list = cols || [:third]
122
+ @main_param = param
123
+ end
124
+
125
+ def query
126
+ @query ||= Query.new(self, config)
127
+ end
128
+
129
+ class Query < ::Ruby::Reports::Services::QueryBuilder
130
+ def select_data
131
+ [{:first => :one, :second => report.main_param, :third => 3}]
132
+ end
133
+ end
134
+ end
135
+
136
+ > report = MyDynamicCsvReport.build('Main param', [:third, :four])
137
+ # => #<MyDynamicCsvReport:0x00000002171a68 ...>
138
+ > report.ready?
139
+ # => true
140
+ > IO.read(report.filename)
141
+ # => "First one,Second,third,four\ndecorated: one,Main param - is second,3,\"\"\n"
142
+
143
+ ```
144
+
86
145
  ## Development
87
146
 
88
147
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -29,16 +29,17 @@ module Ruby
29
29
 
30
30
  def build_row(row)
31
31
  @row = row.is_a?(Hash) ? row.rekey! : row
32
- row = DslProxy.exec(self, @row, &table_block)
32
+ DslProxy.exec(self, @row, &table_block)
33
+ row = @table_row.dup
33
34
  cleanup_row
34
35
  row
35
36
  end
36
37
 
37
38
  def build_header
38
39
  @building_header = true
39
- header = DslProxy.exec(self, Dummy.new, &table_block)
40
+ DslProxy.exec(self, Dummy.new, &table_block)
40
41
  @building_header = false
41
-
42
+ header = @table_header.dup
42
43
  cleanup_header
43
44
  header
44
45
  end
@@ -1,7 +1,7 @@
1
1
  # coding: utf-8
2
2
  module Ruby
3
3
  module Reports
4
- VERSION = '0.0.3'
4
+ VERSION = '0.1.0'
5
5
  end
6
6
  end
7
7
 
metadata CHANGED
@@ -1,139 +1,139 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-reports
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey D.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-22 00:00:00.000000000 Z
11
+ date: 2016-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- prerelease: false
15
14
  name: iron-dsl
16
15
  requirement: !ruby/object:Gem::Requirement
17
16
  requirements:
18
- - - '>='
17
+ - - ">="
19
18
  - !ruby/object:Gem::Version
20
19
  version: '0'
21
20
  type: :runtime
21
+ prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- prerelease: false
29
28
  name: attr_extras
30
29
  requirement: !ruby/object:Gem::Requirement
31
30
  requirements:
32
- - - '>='
31
+ - - ">="
33
32
  - !ruby/object:Gem::Version
34
33
  version: '0'
35
34
  type: :runtime
35
+ prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- prerelease: false
43
42
  name: facets
44
43
  requirement: !ruby/object:Gem::Requirement
45
44
  requirements:
46
- - - '>='
45
+ - - ">="
47
46
  - !ruby/object:Gem::Version
48
47
  version: '0'
49
48
  type: :runtime
49
+ prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- prerelease: false
57
56
  name: rake
58
57
  requirement: !ruby/object:Gem::Requirement
59
58
  requirements:
60
- - - '>='
59
+ - - ">="
61
60
  - !ruby/object:Gem::Version
62
61
  version: '0'
63
62
  type: :development
63
+ prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- prerelease: false
71
70
  name: pry
72
71
  requirement: !ruby/object:Gem::Requirement
73
72
  requirements:
74
- - - '>='
73
+ - - ">="
75
74
  - !ruby/object:Gem::Version
76
75
  version: '0'
77
76
  type: :development
77
+ prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- prerelease: false
85
84
  name: rspec
86
85
  requirement: !ruby/object:Gem::Requirement
87
86
  requirements:
88
- - - '>='
87
+ - - ">="
89
88
  - !ruby/object:Gem::Version
90
89
  version: 2.14.0
91
90
  type: :development
91
+ prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: 2.14.0
97
97
  - !ruby/object:Gem::Dependency
98
- prerelease: false
99
98
  name: simplecov
100
99
  requirement: !ruby/object:Gem::Requirement
101
100
  requirements:
102
- - - '>='
101
+ - - ">="
103
102
  - !ruby/object:Gem::Version
104
103
  version: '0'
105
104
  type: :development
105
+ prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '>='
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- prerelease: false
113
112
  name: timecop
114
113
  requirement: !ruby/object:Gem::Requirement
115
114
  requirements:
116
- - - ~>
115
+ - - "~>"
117
116
  - !ruby/object:Gem::Version
118
117
  version: 0.7.1
119
118
  type: :development
119
+ prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ~>
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: 0.7.1
125
125
  - !ruby/object:Gem::Dependency
126
- prerelease: false
127
126
  name: codeclimate-test-reporter
128
127
  requirement: !ruby/object:Gem::Requirement
129
128
  requirements:
130
- - - '>='
129
+ - - ">="
131
130
  - !ruby/object:Gem::Version
132
131
  version: '0'
133
132
  type: :development
133
+ prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - '>='
136
+ - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  description: Make your custom reports from any source to CSV by provided DSL
@@ -145,9 +145,9 @@ executables:
145
145
  extensions: []
146
146
  extra_rdoc_files: []
147
147
  files:
148
- - .gitignore
149
- - .rspec
150
- - .travis.yml
148
+ - ".gitignore"
149
+ - ".rspec"
150
+ - ".travis.yml"
151
151
  - Gemfile
152
152
  - LICENSE.txt
153
153
  - README.md
@@ -178,12 +178,12 @@ require_paths:
178
178
  - lib
179
179
  required_ruby_version: !ruby/object:Gem::Requirement
180
180
  requirements:
181
- - - '>='
181
+ - - ">="
182
182
  - !ruby/object:Gem::Version
183
183
  version: '0'
184
184
  required_rubygems_version: !ruby/object:Gem::Requirement
185
185
  requirements:
186
- - - '>='
186
+ - - ">="
187
187
  - !ruby/object:Gem::Version
188
188
  version: '0'
189
189
  requirements: []