sycsvpro 0.0.2 → 0.0.3

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: cb699d3d7d012d38933471d8d5f52d9f5a114ca8
4
- data.tar.gz: b1e29aeaeb827ce59fcbee98e492f184025d6e61
3
+ metadata.gz: 667ff2c450da872ce5ad260befa8a88e6ae10a8a
4
+ data.tar.gz: acdff20054e66a346444891324926d9b30706162
5
5
  SHA512:
6
- metadata.gz: e76f1f7f1de7cd90b77b5a78f1b9dbda877c9292cd6bd592f3677cf305738339aee9e1fc5d57df0fb39c74d75ea53948cefe9876031667c2598ce7309c18f3df
7
- data.tar.gz: f3c0bf8e9d2eaae8a76ffd7420be5e7c10bc929019d7edf7c44ff9e191f1e8042cdc87512aff3f20efb93a5b5c8e523a39fccb8aebd09e3ea62971790791b092
6
+ metadata.gz: 8b6721313dbcaa99e8655ef74889fe812e711ec9321104e247830581d12532f68629818f4bf16452e07b4668058ee5286fc918203e7d565cf639bcd27afbb7f2
7
+ data.tar.gz: 69f3acda440ea098a05c4e905ee4dc8bfcd110f05d3093e93c4ba6244a1dc3d60f144c09b4ba1e065ed45a5e4901d362e6b02f29eb869060944c08ab7b124176
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sycsvpro (0.0.2)
4
+ sycsvpro (0.0.3)
5
5
  gli (= 2.9.0)
6
6
 
7
7
  GEM
data/html/Dsl.html CHANGED
@@ -68,6 +68,8 @@
68
68
 
69
69
  <li ><a href="#method-i-rows">#rows</a>
70
70
 
71
+ <li ><a href="#method-i-unstring">#unstring</a>
72
+
71
73
  <li ><a href="#method-i-write_to">#write_to</a>
72
74
 
73
75
  </ul>
@@ -149,6 +151,41 @@ provided by the caller</p>
149
151
 
150
152
 
151
153
 
154
+ </div>
155
+
156
+
157
+ <div id="method-i-unstring" class="method-detail ">
158
+
159
+ <div class="method-heading">
160
+ <span class="method-name">unstring</span><span
161
+ class="method-args">(line)</span>
162
+
163
+ <span class="method-click-advice">click to toggle source</span>
164
+
165
+ </div>
166
+
167
+
168
+ <div class="method-description">
169
+
170
+ <p>Remove leading and trailing “ and spaces as well as reducing more than 2
171
+ spaces between words from csv values like ”a“;ba g;c;”d“;e to a;b
172
+ ag;c;d;e</p>
173
+
174
+
175
+
176
+
177
+ <div class="method-source-code" id="unstring-source">
178
+ <pre><span class="ruby-comment"># File lib/sycsvpro/dsl.rb, line 32</span>
179
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">unstring</span>(<span class="ruby-identifier">line</span>)
180
+ <span class="ruby-identifier">line</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp">/(?&lt;=^|;)\s*&quot;?\s*|\s*&quot;?\s*(?=;|$)/</span>, <span class="ruby-string">&quot;&quot;</span>).<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp">/\s{2,}/</span>, <span class="ruby-string">&quot; &quot;</span>) <span class="ruby-keyword">unless</span> <span class="ruby-identifier">line</span>.<span class="ruby-identifier">nil?</span>
181
+ <span class="ruby-keyword">end</span></pre>
182
+ </div>
183
+
184
+ </div>
185
+
186
+
187
+
188
+
152
189
  </div>
153
190
 
154
191
 
@@ -65,7 +65,18 @@
65
65
 
66
66
  </div>
67
67
 
68
-
68
+ <div id="includes-section" class="nav-section">
69
+ <h3>Included Modules</h3>
70
+
71
+ <ul class="link-list">
72
+
73
+
74
+ <li><a class="include" href="../Dsl.html">Dsl</a>
75
+
76
+
77
+ </ul>
78
+ </div>
79
+
69
80
 
70
81
  <!-- Method Quickref -->
71
82
  <div id="method-list-section" class="nav-section">
@@ -226,7 +237,7 @@ generated due to a arithmetic operation that creates new columns</p>
226
237
 
227
238
 
228
239
  <div class="method-source-code" id="new-source">
229
- <pre><span class="ruby-comment"># File lib/sycsvpro/calculator.rb, line 28</span>
240
+ <pre><span class="ruby-comment"># File lib/sycsvpro/calculator.rb, line 31</span>
230
241
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">options</span>={})
231
242
  <span class="ruby-ivar">@infile</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:infile</span>]
232
243
  <span class="ruby-ivar">@outfile</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:outfile</span>]
@@ -272,7 +283,7 @@ generated due to a arithmetic operation that creates new columns</p>
272
283
 
273
284
 
274
285
  <div class="method-source-code" id="execute-source">
275
- <pre><span class="ruby-comment"># File lib/sycsvpro/calculator.rb, line 43</span>
286
+ <pre><span class="ruby-comment"># File lib/sycsvpro/calculator.rb, line 46</span>
276
287
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">execute</span>
277
288
  <span class="ruby-identifier">processed_header</span> = <span class="ruby-keyword">false</span>
278
289
 
@@ -289,7 +300,7 @@ generated due to a arithmetic operation that creates new columns</p>
289
300
 
290
301
  <span class="ruby-keyword">next</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">row_filter</span>.<span class="ruby-identifier">process</span>(<span class="ruby-identifier">line</span>, <span class="ruby-identifier">row</span><span class="ruby-operator">:</span> <span class="ruby-identifier">index</span>).<span class="ruby-identifier">nil?</span>
291
302
 
292
- <span class="ruby-ivar">@columns</span> = <span class="ruby-identifier">line</span>.<span class="ruby-identifier">chomp</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">&#39;;&#39;</span>)
303
+ <span class="ruby-ivar">@columns</span> = <span class="ruby-identifier">unstring</span>(<span class="ruby-identifier">line</span>).<span class="ruby-identifier">chomp</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">&#39;;&#39;</span>)
293
304
  <span class="ruby-identifier">formulae</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">col</span>, <span class="ruby-identifier">formula</span><span class="ruby-operator">|</span>
294
305
  <span class="ruby-ivar">@columns</span>[<span class="ruby-identifier">col</span>.<span class="ruby-identifier">to_i</span>] = <span class="ruby-identifier">eval</span>(<span class="ruby-identifier">formula</span>)
295
306
  <span class="ruby-keyword">end</span>
@@ -326,7 +337,7 @@ generated due to a arithmetic operation that creates new columns</p>
326
337
 
327
338
 
328
339
  <div class="method-source-code" id="method_missing-source">
329
- <pre><span class="ruby-comment"># File lib/sycsvpro/calculator.rb, line 38</span>
340
+ <pre><span class="ruby-comment"># File lib/sycsvpro/calculator.rb, line 41</span>
330
341
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">method_missing</span>(<span class="ruby-identifier">id</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
331
342
  <span class="ruby-identifier">to_number</span>(<span class="ruby-identifier">columns</span>[<span class="ruby-node">$1</span>.<span class="ruby-identifier">to_i</span>]) <span class="ruby-keyword">if</span> <span class="ruby-identifier">id</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/c(\d+)/</span>
332
343
  <span class="ruby-keyword">end</span></pre>
@@ -65,7 +65,18 @@
65
65
 
66
66
  </div>
67
67
 
68
-
68
+ <div id="includes-section" class="nav-section">
69
+ <h3>Included Modules</h3>
70
+
71
+ <ul class="link-list">
72
+
73
+
74
+ <li><a class="include" href="../Dsl.html">Dsl</a>
75
+
76
+
77
+ </ul>
78
+ </div>
79
+
69
80
 
70
81
  <!-- Method Quickref -->
71
82
  <div id="method-list-section" class="nav-section">
@@ -129,54 +140,54 @@ names and uses the count as the column value</p>
129
140
  </div>
130
141
  </div>
131
142
 
132
- <div id="attribute-i-customers" class="method-detail">
143
+ <div id="attribute-i-heading" class="method-detail">
133
144
  <div class="method-heading attribute-method-heading">
134
- <span class="method-name">customers</span><span
145
+ <span class="method-name">heading</span><span
135
146
  class="attribute-access-type">[R]</span>
136
147
  </div>
137
148
 
138
149
  <div class="method-description">
139
150
 
140
- <p>values that are assigned to the key column</p>
151
+ <p>header of the out file</p>
141
152
 
142
153
  </div>
143
154
  </div>
144
155
 
145
- <div id="attribute-i-heading" class="method-detail">
156
+ <div id="attribute-i-infile" class="method-detail">
146
157
  <div class="method-heading attribute-method-heading">
147
- <span class="method-name">heading</span><span
158
+ <span class="method-name">infile</span><span
148
159
  class="attribute-access-type">[R]</span>
149
160
  </div>
150
161
 
151
162
  <div class="method-description">
152
163
 
153
- <p>header of the out file</p>
164
+ <p>infile contains the data that is operated on</p>
154
165
 
155
166
  </div>
156
167
  </div>
157
168
 
158
- <div id="attribute-i-infile" class="method-detail">
169
+ <div id="attribute-i-key_column" class="method-detail">
159
170
  <div class="method-heading attribute-method-heading">
160
- <span class="method-name">infile</span><span
171
+ <span class="method-name">key_column</span><span
161
172
  class="attribute-access-type">[R]</span>
162
173
  </div>
163
174
 
164
175
  <div class="method-description">
165
176
 
166
- <p>infile contains the data that is operated on</p>
177
+ <p>values are assigned to the key column</p>
167
178
 
168
179
  </div>
169
180
  </div>
170
181
 
171
- <div id="attribute-i-key_column" class="method-detail">
182
+ <div id="attribute-i-key_values" class="method-detail">
172
183
  <div class="method-heading attribute-method-heading">
173
- <span class="method-name">key_column</span><span
184
+ <span class="method-name">key_values</span><span
174
185
  class="attribute-access-type">[R]</span>
175
186
  </div>
176
187
 
177
188
  <div class="method-description">
178
189
 
179
- <p>values are assigned to the key column</p>
190
+ <p>values that are assigned to the key column</p>
180
191
 
181
192
  </div>
182
193
  </div>
@@ -236,14 +247,14 @@ names and uses the count as the column value</p>
236
247
 
237
248
 
238
249
  <div class="method-source-code" id="new-source">
239
- <pre><span class="ruby-comment"># File lib/sycsvpro/counter.rb, line 27</span>
250
+ <pre><span class="ruby-comment"># File lib/sycsvpro/counter.rb, line 30</span>
240
251
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">options</span>={})
241
252
  <span class="ruby-ivar">@infile</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:infile</span>]
242
253
  <span class="ruby-ivar">@outfile</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:outfile</span>]
243
254
  <span class="ruby-ivar">@key_column</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:key</span>].<span class="ruby-identifier">to_i</span>
244
255
  <span class="ruby-ivar">@row_filter</span> = <span class="ruby-constant">RowFilter</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:rows</span>])
245
256
  <span class="ruby-ivar">@col_filter</span> = <span class="ruby-constant">ColumnFilter</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:cols</span>], <span class="ruby-identifier">df</span><span class="ruby-operator">:</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:df</span>])
246
- <span class="ruby-ivar">@customers</span> = {}
257
+ <span class="ruby-ivar">@key_values</span> = {}
247
258
  <span class="ruby-ivar">@heading</span> = []
248
259
  <span class="ruby-keyword">end</span></pre>
249
260
  </div>
@@ -283,7 +294,7 @@ names and uses the count as the column value</p>
283
294
 
284
295
 
285
296
  <div class="method-source-code" id="execute-source">
286
- <pre><span class="ruby-comment"># File lib/sycsvpro/counter.rb, line 38</span>
297
+ <pre><span class="ruby-comment"># File lib/sycsvpro/counter.rb, line 41</span>
287
298
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">execute</span>
288
299
  <span class="ruby-identifier">process_file</span>
289
300
  <span class="ruby-identifier">write_result</span>
@@ -317,16 +328,16 @@ names and uses the count as the column value</p>
317
328
 
318
329
 
319
330
  <div class="method-source-code" id="process_file-source">
320
- <pre><span class="ruby-comment"># File lib/sycsvpro/counter.rb, line 44</span>
331
+ <pre><span class="ruby-comment"># File lib/sycsvpro/counter.rb, line 47</span>
321
332
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">process_file</span>
322
333
  <span class="ruby-constant">File</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">infile</span>).<span class="ruby-identifier">each_with_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span>, <span class="ruby-identifier">index</span><span class="ruby-operator">|</span>
323
334
  <span class="ruby-identifier">result</span> = <span class="ruby-identifier">col_filter</span>.<span class="ruby-identifier">process</span>(<span class="ruby-identifier">row_filter</span>.<span class="ruby-identifier">process</span>(<span class="ruby-identifier">line</span>.<span class="ruby-identifier">chomp</span>, <span class="ruby-identifier">row</span><span class="ruby-operator">:</span> <span class="ruby-identifier">index</span>))
324
335
  <span class="ruby-keyword">unless</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-keyword">or</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">empty?</span>
325
- <span class="ruby-identifier">key</span> = <span class="ruby-identifier">line</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">&#39;;&#39;</span>)[<span class="ruby-identifier">key_column</span>]
326
- <span class="ruby-identifier">customer</span> = <span class="ruby-identifier">customers</span>[<span class="ruby-identifier">key</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">customers</span>[<span class="ruby-identifier">key</span>] = { <span class="ruby-identifier">name</span><span class="ruby-operator">:</span> <span class="ruby-identifier">key</span>, <span class="ruby-identifier">products</span><span class="ruby-operator">:</span> <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">0</span>) }
336
+ <span class="ruby-identifier">key</span> = <span class="ruby-identifier">unstring</span>(<span class="ruby-identifier">line</span>).<span class="ruby-identifier">split</span>(<span class="ruby-string">&#39;;&#39;</span>)[<span class="ruby-identifier">key_column</span>]
337
+ <span class="ruby-identifier">key_value</span> = <span class="ruby-identifier">key_values</span>[<span class="ruby-identifier">key</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">key_values</span>[<span class="ruby-identifier">key</span>] = { <span class="ruby-identifier">name</span><span class="ruby-operator">:</span> <span class="ruby-identifier">key</span>, <span class="ruby-identifier">elements</span><span class="ruby-operator">:</span> <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">0</span>) }
327
338
  <span class="ruby-identifier">result</span>.<span class="ruby-identifier">chomp</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">&#39;;&#39;</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">column</span><span class="ruby-operator">|</span>
328
339
  <span class="ruby-identifier">heading</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">column</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">heading</span>.<span class="ruby-identifier">index</span>(<span class="ruby-identifier">column</span>).<span class="ruby-identifier">nil?</span>
329
- <span class="ruby-identifier">customer</span>[<span class="ruby-value">:products</span>][<span class="ruby-identifier">column</span>] <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
340
+ <span class="ruby-identifier">key_value</span>[<span class="ruby-value">:elements</span>][<span class="ruby-identifier">column</span>] <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
330
341
  <span class="ruby-keyword">end</span>
331
342
  <span class="ruby-keyword">end</span>
332
343
  <span class="ruby-keyword">end</span>
@@ -360,14 +371,14 @@ names and uses the count as the column value</p>
360
371
 
361
372
 
362
373
  <div class="method-source-code" id="write_result-source">
363
- <pre><span class="ruby-comment"># File lib/sycsvpro/counter.rb, line 59</span>
374
+ <pre><span class="ruby-comment"># File lib/sycsvpro/counter.rb, line 62</span>
364
375
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">write_result</span>
365
376
  <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">outfile</span>, <span class="ruby-string">&#39;w&#39;</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">out</span><span class="ruby-operator">|</span>
366
- <span class="ruby-identifier">out</span>.<span class="ruby-identifier">puts</span> ([<span class="ruby-string">&quot;customer&quot;</span>] <span class="ruby-operator">+</span> <span class="ruby-identifier">heading</span>.<span class="ruby-identifier">sort</span>).<span class="ruby-identifier">join</span>(<span class="ruby-string">&#39;;&#39;</span>)
367
- <span class="ruby-identifier">customers</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
377
+ <span class="ruby-identifier">out</span>.<span class="ruby-identifier">puts</span> ([<span class="ruby-string">&quot;key&quot;</span>] <span class="ruby-operator">+</span> <span class="ruby-identifier">heading</span>.<span class="ruby-identifier">sort</span>).<span class="ruby-identifier">join</span>(<span class="ruby-string">&#39;;&#39;</span>)
378
+ <span class="ruby-identifier">key_values</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
368
379
  <span class="ruby-identifier">line</span> = [<span class="ruby-identifier">k</span>]
369
380
  <span class="ruby-identifier">heading</span>.<span class="ruby-identifier">sort</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">h</span><span class="ruby-operator">|</span>
370
- <span class="ruby-identifier">line</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">v</span>[<span class="ruby-value">:products</span>][<span class="ruby-identifier">h</span>]
381
+ <span class="ruby-identifier">line</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">v</span>[<span class="ruby-value">:elements</span>][<span class="ruby-identifier">h</span>]
371
382
  <span class="ruby-keyword">end</span>
372
383
  <span class="ruby-identifier">out</span>.<span class="ruby-identifier">puts</span> <span class="ruby-identifier">line</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">&#39;;&#39;</span>)
373
384
  <span class="ruby-keyword">end</span>
@@ -245,7 +245,7 @@ otherwise false</p>
245
245
 
246
246
 
247
247
  <div class="method-source-code" id="has_filter-3F-source">
248
- <pre><span class="ruby-comment"># File lib/sycsvpro/filter.rb, line 57</span>
248
+ <pre><span class="ruby-comment"># File lib/sycsvpro/filter.rb, line 59</span>
249
249
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">has_filter?</span>
250
250
  <span class="ruby-keyword">return</span> <span class="ruby-operator">!</span>(<span class="ruby-identifier">filter</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">empty?</span>)
251
251
  <span class="ruby-keyword">end</span></pre>
@@ -325,9 +325,11 @@ otherwise false</p>
325
325
  <pre><span class="ruby-comment"># File lib/sycsvpro/filter.rb, line 45</span>
326
326
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">pivot_each_column</span>(<span class="ruby-identifier">values</span>=[])
327
327
  <span class="ruby-identifier">pivot</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">column</span>, <span class="ruby-identifier">parameters</span><span class="ruby-operator">|</span>
328
+ <span class="ruby-identifier">value</span> = <span class="ruby-identifier">values</span>[<span class="ruby-identifier">parameters</span>[<span class="ruby-value">:col</span>].<span class="ruby-identifier">to_i</span>]
329
+ <span class="ruby-identifier">value</span> = <span class="ruby-identifier">value</span>.<span class="ruby-identifier">strip</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp">/^&quot;|&quot;$/</span>, <span class="ruby-string">&quot;&quot;</span>) <span class="ruby-keyword">unless</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">nil?</span>
328
330
  <span class="ruby-identifier">match</span> = <span class="ruby-keyword">false</span>
329
331
  <span class="ruby-keyword">begin</span>
330
- <span class="ruby-identifier">match</span> = <span class="ruby-identifier">eval</span>(<span class="ruby-identifier">parameters</span>[<span class="ruby-value">:operation</span>].<span class="ruby-identifier">gsub</span>(<span class="ruby-string">&#39;[value]&#39;</span>, <span class="ruby-identifier">values</span>[<span class="ruby-identifier">parameters</span>[<span class="ruby-value">:col</span>].<span class="ruby-identifier">to_i</span>]))
332
+ <span class="ruby-identifier">match</span> = <span class="ruby-identifier">eval</span>(<span class="ruby-identifier">parameters</span>[<span class="ruby-value">:operation</span>].<span class="ruby-identifier">gsub</span>(<span class="ruby-string">&#39;[value]&#39;</span>, <span class="ruby-identifier">value</span>))
331
333
  <span class="ruby-keyword">rescue</span>
332
334
  <span class="ruby-keyword">end</span>
333
335
  <span class="ruby-keyword">yield</span> <span class="ruby-identifier">column</span>, <span class="ruby-identifier">match</span>
@@ -65,7 +65,18 @@
65
65
 
66
66
  </div>
67
67
 
68
-
68
+ <div id="includes-section" class="nav-section">
69
+ <h3>Included Modules</h3>
70
+
71
+ <ul class="link-list">
72
+
73
+
74
+ <li><a class="include" href="../Dsl.html">Dsl</a>
75
+
76
+
77
+ </ul>
78
+ </div>
79
+
69
80
 
70
81
  <!-- Method Quickref -->
71
82
  <div id="method-list-section" class="nav-section">
@@ -153,7 +164,7 @@
153
164
 
154
165
 
155
166
  <div class="method-source-code" id="new-source">
156
- <pre><span class="ruby-comment"># File lib/sycsvpro/header.rb, line 13</span>
167
+ <pre><span class="ruby-comment"># File lib/sycsvpro/header.rb, line 16</span>
157
168
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">header</span>)
158
169
  <span class="ruby-keyword">unless</span> <span class="ruby-identifier">header</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-keyword">or</span> <span class="ruby-identifier">header</span>.<span class="ruby-identifier">empty?</span>
159
170
  <span class="ruby-ivar">@header_cols</span> = <span class="ruby-identifier">header</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">&#39;,&#39;</span>)
@@ -198,10 +209,10 @@
198
209
 
199
210
 
200
211
  <div class="method-source-code" id="process-source">
201
- <pre><span class="ruby-comment"># File lib/sycsvpro/header.rb, line 22</span>
212
+ <pre><span class="ruby-comment"># File lib/sycsvpro/header.rb, line 25</span>
202
213
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">process</span>(<span class="ruby-identifier">line</span>)
203
214
  <span class="ruby-keyword">return</span> <span class="ruby-string">&quot;&quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@header_cols</span>.<span class="ruby-identifier">empty?</span>
204
- <span class="ruby-ivar">@header_cols</span>[<span class="ruby-value">0</span>] = <span class="ruby-identifier">line</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">&#39;;&#39;</span>)
215
+ <span class="ruby-ivar">@header_cols</span>[<span class="ruby-value">0</span>] = <span class="ruby-identifier">unstring</span>(<span class="ruby-identifier">line</span>).<span class="ruby-identifier">split</span>(<span class="ruby-string">&#39;;&#39;</span>)
205
216
  <span class="ruby-ivar">@header_cols</span>.<span class="ruby-identifier">flatten</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">&#39;;&#39;</span>)
206
217
  <span class="ruby-keyword">end</span></pre>
207
218
  </div>
@@ -65,7 +65,18 @@
65
65
 
66
66
  </div>
67
67
 
68
-
68
+ <div id="includes-section" class="nav-section">
69
+ <h3>Included Modules</h3>
70
+
71
+ <ul class="link-list">
72
+
73
+
74
+ <li><a class="include" href="../Dsl.html">Dsl</a>
75
+
76
+
77
+ </ul>
78
+ </div>
79
+
69
80
 
70
81
  <!-- Method Quickref -->
71
82
  <div id="method-list-section" class="nav-section">
@@ -130,8 +141,9 @@
130
141
 
131
142
 
132
143
  <div class="method-source-code" id="process-source">
133
- <pre><span class="ruby-comment"># File lib/sycsvpro/row_filter.rb, line 10</span>
144
+ <pre><span class="ruby-comment"># File lib/sycsvpro/row_filter.rb, line 13</span>
134
145
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">process</span>(<span class="ruby-identifier">object</span>, <span class="ruby-identifier">options</span>={})
146
+ <span class="ruby-identifier">object</span> = <span class="ruby-identifier">unstring</span>(<span class="ruby-identifier">object</span>)
135
147
  <span class="ruby-keyword">return</span> <span class="ruby-identifier">object</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">has_filter?</span>
136
148
  <span class="ruby-identifier">filtered</span> = <span class="ruby-operator">!</span><span class="ruby-identifier">filter</span>.<span class="ruby-identifier">flatten</span>.<span class="ruby-identifier">uniq</span>.<span class="ruby-identifier">index</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:row</span>]).<span class="ruby-identifier">nil?</span>
137
149
  <span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span>
data/html/created.rid CHANGED
@@ -1,17 +1,17 @@
1
- Mon, 17 Feb 2014 21:03:10 +0100
1
+ Tue, 18 Feb 2014 21:41:43 +0100
2
2
  README.rdoc Sun, 16 Feb 2014 22:01:46 +0100
3
3
  lib/sycsvpro.rb Sun, 16 Feb 2014 21:33:36 +0100
4
- lib/sycsvpro/analyzer.rb Sun, 16 Feb 2014 21:08:55 +0100
5
- lib/sycsvpro/calculator.rb Sun, 16 Feb 2014 20:55:48 +0100
4
+ lib/sycsvpro/analyzer.rb Tue, 18 Feb 2014 19:57:28 +0100
5
+ lib/sycsvpro/calculator.rb Tue, 18 Feb 2014 19:53:34 +0100
6
6
  lib/sycsvpro/collector.rb Sun, 16 Feb 2014 20:59:27 +0100
7
7
  lib/sycsvpro/column_filter.rb Sun, 16 Feb 2014 21:10:11 +0100
8
- lib/sycsvpro/counter.rb Sun, 16 Feb 2014 21:38:32 +0100
9
- lib/sycsvpro/dsl.rb Sun, 16 Feb 2014 21:20:01 +0100
10
- lib/sycsvpro/extractor.rb Sun, 16 Feb 2014 21:06:42 +0100
11
- lib/sycsvpro/filter.rb Mon, 17 Feb 2014 21:02:21 +0100
12
- lib/sycsvpro/header.rb Sun, 16 Feb 2014 21:30:06 +0100
13
- lib/sycsvpro/mapper.rb Sun, 16 Feb 2014 21:04:46 +0100
8
+ lib/sycsvpro/counter.rb Tue, 18 Feb 2014 21:22:37 +0100
9
+ lib/sycsvpro/dsl.rb Tue, 18 Feb 2014 21:34:51 +0100
10
+ lib/sycsvpro/extractor.rb Tue, 18 Feb 2014 19:42:16 +0100
11
+ lib/sycsvpro/filter.rb Tue, 18 Feb 2014 20:23:57 +0100
12
+ lib/sycsvpro/header.rb Tue, 18 Feb 2014 19:50:26 +0100
13
+ lib/sycsvpro/mapper.rb Tue, 18 Feb 2014 19:45:47 +0100
14
14
  lib/sycsvpro/profiler.rb Sun, 16 Feb 2014 21:31:39 +0100
15
- lib/sycsvpro/row_filter.rb Mon, 17 Feb 2014 19:48:06 +0100
16
- lib/sycsvpro/version.rb Mon, 17 Feb 2014 20:31:15 +0100
15
+ lib/sycsvpro/row_filter.rb Tue, 18 Feb 2014 19:45:25 +0100
16
+ lib/sycsvpro/version.rb Tue, 18 Feb 2014 20:01:04 +0100
17
17
  bin/sycsvpro Sun, 16 Feb 2014 18:17:16 +0100
@@ -1 +1 @@
1
- var search_data = {"index":{"searchIndex":["dsl","object","sycsvpro","analyzer","calculator","collector","columnfilter","counter","extractor","filter","header","mapper","profiler","rowfilter","execute()","execute()","execute()","execute()","execute()","execute()","has_filter?()","method_missing()","method_missing()","new()","new()","new()","new()","new()","new()","new()","new()","new()","pivot_each_column()","process()","process()","process()","process()","process_file()","result()","rows()","write_result()","write_to()","readme"],"longSearchIndex":["dsl","object","sycsvpro","sycsvpro::analyzer","sycsvpro::calculator","sycsvpro::collector","sycsvpro::columnfilter","sycsvpro::counter","sycsvpro::extractor","sycsvpro::filter","sycsvpro::header","sycsvpro::mapper","sycsvpro::profiler","sycsvpro::rowfilter","sycsvpro::calculator#execute()","sycsvpro::collector#execute()","sycsvpro::counter#execute()","sycsvpro::extractor#execute()","sycsvpro::mapper#execute()","sycsvpro::profiler#execute()","sycsvpro::filter#has_filter?()","sycsvpro::calculator#method_missing()","sycsvpro::filter#method_missing()","sycsvpro::analyzer::new()","sycsvpro::calculator::new()","sycsvpro::collector::new()","sycsvpro::counter::new()","sycsvpro::extractor::new()","sycsvpro::filter::new()","sycsvpro::header::new()","sycsvpro::mapper::new()","sycsvpro::profiler::new()","sycsvpro::filter#pivot_each_column()","sycsvpro::columnfilter#process()","sycsvpro::filter#process()","sycsvpro::header#process()","sycsvpro::rowfilter#process()","sycsvpro::counter#process_file()","sycsvpro::analyzer#result()","dsl#rows()","sycsvpro::counter#write_result()","dsl#write_to()",""],"info":[["Dsl","","Dsl.html","","<p>Methods to be used in customer specific script files\n"],["Object","","Object.html","",""],["Sycsvpro","","Sycsvpro.html","","<p>Operating csv files\n<p>Operating csv files\n<p>Operating csv files\n"],["Sycsvpro::Analyzer","","Sycsvpro/Analyzer.html","","<p>Analyzes the file structure\n"],["Sycsvpro::Calculator","","Sycsvpro/Calculator.html","","<p>Processes arithmetic operations on columns of a csv file. A column value\nhas to be a number. Possible …\n"],["Sycsvpro::Collector","","Sycsvpro/Collector.html","","<p>Collects values from rows and groups them in categories\n"],["Sycsvpro::ColumnFilter","","Sycsvpro/ColumnFilter.html","","<p>Creates a new column filter\n"],["Sycsvpro::Counter","","Sycsvpro/Counter.html","","<p>Creates a new counter that counts values and uses the values as column\nnames and uses the count as the …\n"],["Sycsvpro::Extractor","","Sycsvpro/Extractor.html","","<p>Extracts rows and columns from a csv file\n"],["Sycsvpro::Filter","","Sycsvpro/Filter.html","","<p>Creates a new filter that can be extended by sub-classes. A sub-class needs\nto override the process method …\n"],["Sycsvpro::Header","","Sycsvpro/Header.html","","<p>Creates a header\n"],["Sycsvpro::Mapper","","Sycsvpro/Mapper.html","","<p>Map values to new values described in a mapping file\n"],["Sycsvpro::Profiler","","Sycsvpro/Profiler.html","","<p>A profiler takes a Ruby script and executes the provided method in the\nscript\n"],["Sycsvpro::RowFilter","","Sycsvpro/RowFilter.html","","<p>Filters rows based on provided patterns\n"],["execute","Sycsvpro::Calculator","Sycsvpro/Calculator.html#method-i-execute","()","<p>Executes the calculator\n"],["execute","Sycsvpro::Collector","Sycsvpro/Collector.html#method-i-execute","()","<p>Execute the collector\n"],["execute","Sycsvpro::Counter","Sycsvpro/Counter.html#method-i-execute","()","<p>Executes the counter\n"],["execute","Sycsvpro::Extractor","Sycsvpro/Extractor.html#method-i-execute","()","<p>Executes the extractor\n"],["execute","Sycsvpro::Mapper","Sycsvpro/Mapper.html#method-i-execute","()","<p>Executes the mapper\n"],["execute","Sycsvpro::Profiler","Sycsvpro/Profiler.html#method-i-execute","(method)","<p>Executes the provided method in the Ruby script\n"],["has_filter?","Sycsvpro::Filter","Sycsvpro/Filter.html#method-i-has_filter-3F","()","<p>Checks whether a filter has been set. Returns true if filter has been set\notherwise false\n"],["method_missing","Sycsvpro::Calculator","Sycsvpro/Calculator.html#method-i-method_missing","(id, *args, &block)","<p>Retrieves the values from a row as the result of a arithmetic operation\n"],["method_missing","Sycsvpro::Filter","Sycsvpro/Filter.html#method-i-method_missing","(id, *args, &block)","<p>Creates the filters based on the given patterns\n"],["new","Sycsvpro::Analyzer","Sycsvpro/Analyzer.html#method-c-new","(file)","<p>Creates a new analyzer\n"],["new","Sycsvpro::Calculator","Sycsvpro/Calculator.html#method-c-new","(options={})","<p>Creates a new Calculator. Options expects :infile, :outfile, :rows and\n:columns. Optionally a header …\n"],["new","Sycsvpro::Collector","Sycsvpro/Collector.html#method-c-new","(options={})","<p>Creates a new Collector\n"],["new","Sycsvpro::Counter","Sycsvpro/Counter.html#method-c-new","(options={})","<p>Creates a new counter\n"],["new","Sycsvpro::Extractor","Sycsvpro/Extractor.html#method-c-new","(options={})","<p>Creates a new extractor\n"],["new","Sycsvpro::Filter","Sycsvpro/Filter.html#method-c-new","(values, options={})","<p>Creates a new filter\n"],["new","Sycsvpro::Header","Sycsvpro/Header.html#method-c-new","(header)","<p>Create a new header\n"],["new","Sycsvpro::Mapper","Sycsvpro/Mapper.html#method-c-new","(options={})","<p>Creates new mapper\n"],["new","Sycsvpro::Profiler","Sycsvpro/Profiler.html#method-c-new","(pro_file)","<p>Creates a new profiler\n"],["pivot_each_column","Sycsvpro::Filter","Sycsvpro/Filter.html#method-i-pivot_each_column","(values=[])","<p>Yields the column value and whether the filter matches the column\n"],["process","Sycsvpro::ColumnFilter","Sycsvpro/ColumnFilter.html#method-i-process","(object, options={})","<p>Processes the filter and returns the values that respect the filter\n"],["process","Sycsvpro::Filter","Sycsvpro/Filter.html#method-i-process","(object, options={})","<p>Processes the filter. Needs to be overridden by the sub-class\n"],["process","Sycsvpro::Header","Sycsvpro/Header.html#method-i-process","(line)","<p>Returns the header\n"],["process","Sycsvpro::RowFilter","Sycsvpro/RowFilter.html#method-i-process","(object, options={})","<p>Processes the filter on the given row\n"],["process_file","Sycsvpro::Counter","Sycsvpro/Counter.html#method-i-process_file","()","<p>Processes the counting on the in file\n"],["result","Sycsvpro::Analyzer","Sycsvpro/Analyzer.html#method-i-result","()","<p>Analyzes the file and returns the result\n"],["rows","Dsl","Dsl.html#method-i-rows","(options={})","<p>Retrieves rows and columns from the file and returns them to the block\nprovided by the caller\n"],["write_result","Sycsvpro::Counter","Sycsvpro/Counter.html#method-i-write_result","()","<p>Writes the results\n"],["write_to","Dsl","Dsl.html#method-i-write_to","(file)","<p>writes values provided by a block to the given file\n"],["README","","README_rdoc.html","","<p>sycsvpro\n<p>Author &mdash; Pierre Sugar (pierre@sugaryourcoffee.de)\n<p>Copyright &mdash; Copyright © 2014 by Pierre Sugar\n"]]}}
1
+ var search_data = {"index":{"searchIndex":["dsl","object","sycsvpro","analyzer","calculator","collector","columnfilter","counter","extractor","filter","header","mapper","profiler","rowfilter","execute()","execute()","execute()","execute()","execute()","execute()","has_filter?()","method_missing()","method_missing()","new()","new()","new()","new()","new()","new()","new()","new()","new()","pivot_each_column()","process()","process()","process()","process()","process_file()","result()","rows()","unstring()","write_result()","write_to()","readme"],"longSearchIndex":["dsl","object","sycsvpro","sycsvpro::analyzer","sycsvpro::calculator","sycsvpro::collector","sycsvpro::columnfilter","sycsvpro::counter","sycsvpro::extractor","sycsvpro::filter","sycsvpro::header","sycsvpro::mapper","sycsvpro::profiler","sycsvpro::rowfilter","sycsvpro::calculator#execute()","sycsvpro::collector#execute()","sycsvpro::counter#execute()","sycsvpro::extractor#execute()","sycsvpro::mapper#execute()","sycsvpro::profiler#execute()","sycsvpro::filter#has_filter?()","sycsvpro::calculator#method_missing()","sycsvpro::filter#method_missing()","sycsvpro::analyzer::new()","sycsvpro::calculator::new()","sycsvpro::collector::new()","sycsvpro::counter::new()","sycsvpro::extractor::new()","sycsvpro::filter::new()","sycsvpro::header::new()","sycsvpro::mapper::new()","sycsvpro::profiler::new()","sycsvpro::filter#pivot_each_column()","sycsvpro::columnfilter#process()","sycsvpro::filter#process()","sycsvpro::header#process()","sycsvpro::rowfilter#process()","sycsvpro::counter#process_file()","sycsvpro::analyzer#result()","dsl#rows()","dsl#unstring()","sycsvpro::counter#write_result()","dsl#write_to()",""],"info":[["Dsl","","Dsl.html","","<p>Methods to be used in customer specific script files\n"],["Object","","Object.html","",""],["Sycsvpro","","Sycsvpro.html","","<p>Operating csv files\n<p>Operating csv files\n<p>Operating csv files\n"],["Sycsvpro::Analyzer","","Sycsvpro/Analyzer.html","","<p>Analyzes the file structure\n"],["Sycsvpro::Calculator","","Sycsvpro/Calculator.html","","<p>Processes arithmetic operations on columns of a csv file. A column value\nhas to be a number. Possible …\n"],["Sycsvpro::Collector","","Sycsvpro/Collector.html","","<p>Collects values from rows and groups them in categories\n"],["Sycsvpro::ColumnFilter","","Sycsvpro/ColumnFilter.html","","<p>Creates a new column filter\n"],["Sycsvpro::Counter","","Sycsvpro/Counter.html","","<p>Creates a new counter that counts values and uses the values as column\nnames and uses the count as the …\n"],["Sycsvpro::Extractor","","Sycsvpro/Extractor.html","","<p>Extracts rows and columns from a csv file\n"],["Sycsvpro::Filter","","Sycsvpro/Filter.html","","<p>Creates a new filter that can be extended by sub-classes. A sub-class needs\nto override the process method …\n"],["Sycsvpro::Header","","Sycsvpro/Header.html","","<p>Creates a header\n"],["Sycsvpro::Mapper","","Sycsvpro/Mapper.html","","<p>Map values to new values described in a mapping file\n"],["Sycsvpro::Profiler","","Sycsvpro/Profiler.html","","<p>A profiler takes a Ruby script and executes the provided method in the\nscript\n"],["Sycsvpro::RowFilter","","Sycsvpro/RowFilter.html","","<p>Filters rows based on provided patterns\n"],["execute","Sycsvpro::Calculator","Sycsvpro/Calculator.html#method-i-execute","()","<p>Executes the calculator\n"],["execute","Sycsvpro::Collector","Sycsvpro/Collector.html#method-i-execute","()","<p>Execute the collector\n"],["execute","Sycsvpro::Counter","Sycsvpro/Counter.html#method-i-execute","()","<p>Executes the counter\n"],["execute","Sycsvpro::Extractor","Sycsvpro/Extractor.html#method-i-execute","()","<p>Executes the extractor\n"],["execute","Sycsvpro::Mapper","Sycsvpro/Mapper.html#method-i-execute","()","<p>Executes the mapper\n"],["execute","Sycsvpro::Profiler","Sycsvpro/Profiler.html#method-i-execute","(method)","<p>Executes the provided method in the Ruby script\n"],["has_filter?","Sycsvpro::Filter","Sycsvpro/Filter.html#method-i-has_filter-3F","()","<p>Checks whether a filter has been set. Returns true if filter has been set\notherwise false\n"],["method_missing","Sycsvpro::Calculator","Sycsvpro/Calculator.html#method-i-method_missing","(id, *args, &block)","<p>Retrieves the values from a row as the result of a arithmetic operation\n"],["method_missing","Sycsvpro::Filter","Sycsvpro/Filter.html#method-i-method_missing","(id, *args, &block)","<p>Creates the filters based on the given patterns\n"],["new","Sycsvpro::Analyzer","Sycsvpro/Analyzer.html#method-c-new","(file)","<p>Creates a new analyzer\n"],["new","Sycsvpro::Calculator","Sycsvpro/Calculator.html#method-c-new","(options={})","<p>Creates a new Calculator. Options expects :infile, :outfile, :rows and\n:columns. Optionally a header …\n"],["new","Sycsvpro::Collector","Sycsvpro/Collector.html#method-c-new","(options={})","<p>Creates a new Collector\n"],["new","Sycsvpro::Counter","Sycsvpro/Counter.html#method-c-new","(options={})","<p>Creates a new counter\n"],["new","Sycsvpro::Extractor","Sycsvpro/Extractor.html#method-c-new","(options={})","<p>Creates a new extractor\n"],["new","Sycsvpro::Filter","Sycsvpro/Filter.html#method-c-new","(values, options={})","<p>Creates a new filter\n"],["new","Sycsvpro::Header","Sycsvpro/Header.html#method-c-new","(header)","<p>Create a new header\n"],["new","Sycsvpro::Mapper","Sycsvpro/Mapper.html#method-c-new","(options={})","<p>Creates new mapper\n"],["new","Sycsvpro::Profiler","Sycsvpro/Profiler.html#method-c-new","(pro_file)","<p>Creates a new profiler\n"],["pivot_each_column","Sycsvpro::Filter","Sycsvpro/Filter.html#method-i-pivot_each_column","(values=[])","<p>Yields the column value and whether the filter matches the column\n"],["process","Sycsvpro::ColumnFilter","Sycsvpro/ColumnFilter.html#method-i-process","(object, options={})","<p>Processes the filter and returns the values that respect the filter\n"],["process","Sycsvpro::Filter","Sycsvpro/Filter.html#method-i-process","(object, options={})","<p>Processes the filter. Needs to be overridden by the sub-class\n"],["process","Sycsvpro::Header","Sycsvpro/Header.html#method-i-process","(line)","<p>Returns the header\n"],["process","Sycsvpro::RowFilter","Sycsvpro/RowFilter.html#method-i-process","(object, options={})","<p>Processes the filter on the given row\n"],["process_file","Sycsvpro::Counter","Sycsvpro/Counter.html#method-i-process_file","()","<p>Processes the counting on the in file\n"],["result","Sycsvpro::Analyzer","Sycsvpro/Analyzer.html#method-i-result","()","<p>Analyzes the file and returns the result\n"],["rows","Dsl","Dsl.html#method-i-rows","(options={})","<p>Retrieves rows and columns from the file and returns them to the block\nprovided by the caller\n"],["unstring","Dsl","Dsl.html#method-i-unstring","(line)","<p>Remove leading and trailing “ and spaces as well as reducing more than 2\nspaces between words from …\n"],["write_result","Sycsvpro::Counter","Sycsvpro/Counter.html#method-i-write_result","()","<p>Writes the results\n"],["write_to","Dsl","Dsl.html#method-i-write_to","(file)","<p>writes values provided by a block to the given file\n"],["README","","README_rdoc.html","","<p>sycsvpro\n<p>Author &mdash; Pierre Sugar (pierre@sugaryourcoffee.de)\n<p>Copyright &mdash; Copyright © 2014 by Pierre Sugar\n"]]}}
@@ -151,9 +151,9 @@
151
151
  <span class="container">Sycsvpro::Mapper</span>
152
152
 
153
153
  <li class="method">
154
- <a href="Sycsvpro/Calculator.html#method-i-execute">#execute</a>
154
+ <a href="Sycsvpro/Collector.html#method-i-execute">#execute</a>
155
155
  &mdash;
156
- <span class="container">Sycsvpro::Calculator</span>
156
+ <span class="container">Sycsvpro::Collector</span>
157
157
 
158
158
  <li class="method">
159
159
  <a href="Sycsvpro/Extractor.html#method-i-execute">#execute</a>
@@ -161,9 +161,9 @@
161
161
  <span class="container">Sycsvpro::Extractor</span>
162
162
 
163
163
  <li class="method">
164
- <a href="Sycsvpro/Collector.html#method-i-execute">#execute</a>
164
+ <a href="Sycsvpro/Calculator.html#method-i-execute">#execute</a>
165
165
  &mdash;
166
- <span class="container">Sycsvpro::Collector</span>
166
+ <span class="container">Sycsvpro::Calculator</span>
167
167
 
168
168
  <li class="method">
169
169
  <a href="Sycsvpro/Filter.html#method-i-has_filter-3F">#has_filter?</a>
@@ -185,11 +185,6 @@
185
185
  &mdash;
186
186
  <span class="container">Sycsvpro::Filter</span>
187
187
 
188
- <li class="method">
189
- <a href="Sycsvpro/Filter.html#method-i-process">#process</a>
190
- &mdash;
191
- <span class="container">Sycsvpro::Filter</span>
192
-
193
188
  <li class="method">
194
189
  <a href="Sycsvpro/Header.html#method-i-process">#process</a>
195
190
  &mdash;
@@ -200,6 +195,11 @@
200
195
  &mdash;
201
196
  <span class="container">Sycsvpro::ColumnFilter</span>
202
197
 
198
+ <li class="method">
199
+ <a href="Sycsvpro/Filter.html#method-i-process">#process</a>
200
+ &mdash;
201
+ <span class="container">Sycsvpro::Filter</span>
202
+
203
203
  <li class="method">
204
204
  <a href="Sycsvpro/RowFilter.html#method-i-process">#process</a>
205
205
  &mdash;
@@ -220,6 +220,11 @@
220
220
  &mdash;
221
221
  <span class="container">Dsl</span>
222
222
 
223
+ <li class="method">
224
+ <a href="Dsl.html#method-i-unstring">#unstring</a>
225
+ &mdash;
226
+ <span class="container">Dsl</span>
227
+
223
228
  <li class="method">
224
229
  <a href="Sycsvpro/Counter.html#method-i-write_result">#write_result</a>
225
230
  &mdash;
@@ -1,5 +1,6 @@
1
1
  require_relative 'row_filter'
2
2
  require_relative 'header'
3
+ require_relative 'dsl'
3
4
 
4
5
  # Operating csv files
5
6
  module Sycsvpro
@@ -9,6 +10,8 @@ module Sycsvpro
9
10
  # operator like c1*2 will multiply the value of column 1 with 2.
10
11
  class Calculator
11
12
 
13
+ include Dsl
14
+
12
15
  # infile contains the data that is operated on
13
16
  attr_reader :infile
14
17
  # outfile is the file where the result is written to
@@ -56,7 +59,7 @@ module Sycsvpro
56
59
 
57
60
  next if row_filter.process(line, row: index).nil?
58
61
 
59
- @columns = line.chomp.split(';')
62
+ @columns = unstring(line).chomp.split(';')
60
63
  formulae.each do |col, formula|
61
64
  @columns[col.to_i] = eval(formula)
62
65
  end
@@ -1,5 +1,6 @@
1
1
  require_relative 'row_filter'
2
2
  require_relative 'column_filter'
3
+ require_relative 'dsl'
3
4
 
4
5
  # Operating csv files
5
6
  module Sycsvpro
@@ -8,6 +9,8 @@ module Sycsvpro
8
9
  # as the column value
9
10
  class Counter
10
11
 
12
+ include Dsl
13
+
11
14
  # infile contains the data that is operated on
12
15
  attr_reader :infile
13
16
  # outfile is the file where the result is written to
@@ -19,7 +22,7 @@ module Sycsvpro
19
22
  # filter that is used for columns
20
23
  attr_reader :col_filter
21
24
  # values that are assigned to the key column
22
- attr_reader :customers
25
+ attr_reader :key_values
23
26
  # header of the out file
24
27
  attr_reader :heading
25
28
 
@@ -30,7 +33,7 @@ module Sycsvpro
30
33
  @key_column = options[:key].to_i
31
34
  @row_filter = RowFilter.new(options[:rows])
32
35
  @col_filter = ColumnFilter.new(options[:cols], df: options[:df])
33
- @customers = {}
36
+ @key_values = {}
34
37
  @heading = []
35
38
  end
36
39
 
@@ -45,11 +48,11 @@ module Sycsvpro
45
48
  File.new(infile).each_with_index do |line, index|
46
49
  result = col_filter.process(row_filter.process(line.chomp, row: index))
47
50
  unless result.nil? or result.empty?
48
- key = line.split(';')[key_column]
49
- customer = customers[key] || customers[key] = { name: key, products: Hash.new(0) }
51
+ key = unstring(line).split(';')[key_column]
52
+ key_value = key_values[key] || key_values[key] = { name: key, elements: Hash.new(0) }
50
53
  result.chomp.split(';').each do |column|
51
54
  heading << column if heading.index(column).nil?
52
- customer[:products][column] += 1
55
+ key_value[:elements][column] += 1
53
56
  end
54
57
  end
55
58
  end
@@ -58,11 +61,11 @@ module Sycsvpro
58
61
  # Writes the results
59
62
  def write_result
60
63
  File.open(outfile, 'w') do |out|
61
- out.puts (["customer"] + heading.sort).join(';')
62
- customers.each do |k,v|
64
+ out.puts (["key"] + heading.sort).join(';')
65
+ key_values.each do |k,v|
63
66
  line = [k]
64
67
  heading.sort.each do |h|
65
- line << v[:products][h]
68
+ line << v[:elements][h]
66
69
  end
67
70
  out.puts line.join(';')
68
71
  end
data/lib/sycsvpro/dsl.rb CHANGED
@@ -27,6 +27,12 @@ module Dsl
27
27
  end
28
28
  end
29
29
 
30
+ # Remove leading and trailing " and spaces as well as reducing more than 2 spaces between words
31
+ # from csv values like "a";ba g;c;"d";e to a;b ag;c;d;e
32
+ def unstring(line)
33
+ line.gsub(/(?<=^|;)\s*"?\s*|\s*"?\s*(?=;|$)/, "").gsub(/\s{2,}/, " ") unless line.nil?
34
+ end
35
+
30
36
  private
31
37
 
32
38
  # Assigns values to keys that are used in rows and yielded to the block
@@ -44,9 +44,11 @@ module Sycsvpro
44
44
  # Yields the column value and whether the filter matches the column
45
45
  def pivot_each_column(values=[])
46
46
  pivot.each do |column, parameters|
47
+ value = values[parameters[:col].to_i]
48
+ value = value.strip.gsub(/^"|"$/, "") unless value.nil?
47
49
  match = false
48
50
  begin
49
- match = eval(parameters[:operation].gsub('[value]', values[parameters[:col].to_i]))
51
+ match = eval(parameters[:operation].gsub('[value]', value))
50
52
  rescue
51
53
  end
52
54
  yield column, match
@@ -1,4 +1,5 @@
1
1
  require_relative 'filter'
2
+ require_relative 'dsl'
2
3
 
3
4
  # Operating csv files
4
5
  module Sycsvpro
@@ -6,6 +7,8 @@ module Sycsvpro
6
7
  # Creates a header
7
8
  class Header < Filter
8
9
 
10
+ include Dsl
11
+
9
12
  # Header columns
10
13
  attr_reader :header_cols
11
14
 
@@ -21,7 +24,7 @@ module Sycsvpro
21
24
  # Returns the header
22
25
  def process(line)
23
26
  return "" if @header_cols.empty?
24
- @header_cols[0] = line.split(';')
27
+ @header_cols[0] = unstring(line).split(';')
25
28
  @header_cols.flatten.join(';')
26
29
  end
27
30
  end
@@ -1,4 +1,5 @@
1
1
  require_relative 'filter'
2
+ require_relative 'dsl'
2
3
 
3
4
  # Operating csv files
4
5
  module Sycsvpro
@@ -6,8 +7,11 @@ module Sycsvpro
6
7
  # Filters rows based on provided patterns
7
8
  class RowFilter < Filter
8
9
 
10
+ include Dsl
11
+
9
12
  # Processes the filter on the given row
10
13
  def process(object, options={})
14
+ object = unstring(object)
11
15
  return object unless has_filter?
12
16
  filtered = !filter.flatten.uniq.index(options[:row]).nil?
13
17
  pattern.each do |p|
@@ -1,5 +1,5 @@
1
1
  # Operating csv files
2
2
  module Sycsvpro
3
3
  # Version number of sycsvpro
4
- VERSION = '0.0.2'
4
+ VERSION = '0.0.3'
5
5
  end
@@ -15,7 +15,7 @@ module Sycsvpro
15
15
 
16
16
  counter.execute
17
17
 
18
- result = [ "customer;con123;con332;con333;dri111;dri222;dri321",
18
+ result = [ "key;con123;con332;con333;dri111;dri222;dri321",
19
19
  "Fink;1;0;1;0;1;1",
20
20
  "Haas;0;1;0;1;0;0",
21
21
  "Gent;1;0;0;1;0;0",
@@ -35,7 +35,7 @@ module Sycsvpro
35
35
 
36
36
  counter.execute
37
37
 
38
- result = [ "customer;1.1.2013-31.12.2014;<1.1.2013;>31.12.2014",
38
+ result = [ "key;1.1.2013-31.12.2014;<1.1.2013;>31.12.2014",
39
39
  "Fink;0;0;2",
40
40
  "Haas;0;1;0",
41
41
  "Gent;1;0;0",
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sycsvpro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pierre Sugar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-17 00:00:00.000000000 Z
11
+ date: 2014-02-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake