sycsvpro 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +38 -20
- data/README.rdoc +1 -0
- data/bin/sycsvpro +71 -11
- data/html/README_rdoc.html +8 -2
- data/html/Sycsvpro/ColumnTypeFilter.html +187 -0
- data/html/Sycsvpro/Filter.html +21 -5
- data/html/Sycsvpro/Inserter.html +275 -0
- data/html/Sycsvpro/ScriptCreator.html +16 -2
- data/html/Sycsvpro/ScriptList.html +7 -3
- data/html/Sycsvpro/Sorter.html +323 -0
- data/html/Sycsvpro.html +6 -0
- data/html/created.rid +12 -9
- data/html/index.html +14 -2
- data/html/js/search_index.js +1 -1
- data/html/table_of_contents.html +66 -32
- data/lib/sycsvpro/column_type_filter.rb +38 -0
- data/lib/sycsvpro/filter.rb +19 -0
- data/lib/sycsvpro/inserter.rb +40 -0
- data/lib/sycsvpro/script_creator.rb +10 -5
- data/lib/sycsvpro/script_list.rb +6 -2
- data/lib/sycsvpro/sorter.rb +62 -0
- data/lib/sycsvpro/version.rb +1 -1
- data/lib/sycsvpro.rb +2 -0
- data/spec/sycsvpro/allocator_spec.rb +2 -2
- data/spec/sycsvpro/files/insert.ins +1 -0
- data/spec/sycsvpro/files/unsert.ins +2 -0
- data/spec/sycsvpro/inserter_spec.rb +56 -0
- data/spec/sycsvpro/script_list_spec.rb +27 -0
- data/spec/sycsvpro/sorter_spec.rb +184 -0
- data/sycsvpro.rdoc +3 -1
- metadata +12 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 39f66722b9a55455e899ca7a011b6d562f77854a
|
4
|
+
data.tar.gz: 49ad0894d735625b689e904bedc50d551271ad7c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b9761749882a98ab040eaba00e2e80c856341ead1b19cf2b897eb4a5a851af90740cd79bd2804f0c461ed87526a313a555b3877f11cf1a2902f1b1fcd1f8aaee
|
7
|
+
data.tar.gz: 61654ae343a83fdfb87f531aa0c62c36eec85fd9aa0257863d99bfdbfeaff311e645d808782d48779c61b26a5acf015692aa71d2cf1c32b745b4065925c5962a
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -3,15 +3,17 @@ syc-svpro
|
|
3
3
|
|
4
4
|
Processing of csv files. *sycsvpro* offers following functions
|
5
5
|
|
6
|
-
* analyze csv file
|
6
|
+
* analyze a csv file
|
7
7
|
* extract rows and columns from a file
|
8
8
|
* collect values of rows and assign them to categories
|
9
9
|
* map column values to new values
|
10
10
|
* allocate column values to a key column (since version 0.0.4)
|
11
11
|
* count values in columns and use the value as column name
|
12
12
|
* arithmetic operations on values of columns
|
13
|
+
* sort rows base on columns
|
14
|
+
* insert rows to a csv-file (since version 0.0.8)
|
13
15
|
* create or edit a Ruby script
|
14
|
-
* list scripts available optionally with methods
|
16
|
+
* list scripts available optionally with methods (since version 0.0.7)
|
15
17
|
* execute a Ruby script file that operates a csv file
|
16
18
|
|
17
19
|
To get help type
|
@@ -22,16 +24,15 @@ In the following examples we assume the following file
|
|
22
24
|
|
23
25
|
```
|
24
26
|
customer;machine;control;drive;motor;date;contract
|
25
|
-
hello;h1;con123;dri120;mot100;1.
|
26
|
-
hello;h2;con123;dri130;mot110;1.
|
27
|
-
indix;i1;con456;dri130;mot090;
|
28
|
-
chiro;c1;con333;dri110;mot100;1.
|
29
|
-
chiro;c2;con331;dri100;mot130;
|
27
|
+
hello;h1;con123;dri120;mot100;1.01.3013;1
|
28
|
+
hello;h2;con123;dri130;mot110;1.02.3012;1
|
29
|
+
indix;i1;con456;dri130;mot090;5.11.3013;1
|
30
|
+
chiro;c1;con333;dri110;mot100;1.10.3011;1
|
31
|
+
chiro;c2;con331;dri100;mot130;3.05.3010;1
|
30
32
|
```
|
31
33
|
|
32
34
|
Analyze
|
33
35
|
-------
|
34
|
-
|
35
36
|
Analyze the content of the provided file *in.csv*
|
36
37
|
|
37
38
|
$ sycsvpro -f in.csv analyze
|
@@ -50,14 +51,12 @@ Analyze the content of the provided file *in.csv*
|
|
50
51
|
|
51
52
|
Extract
|
52
53
|
-------
|
53
|
-
|
54
54
|
Extract row 1,2 and 10-20 as well as columns 4 and 6-7
|
55
55
|
|
56
56
|
$ sycsvpro -f in.csv -o out.csv extract -r 1,2,10-20 -c 4,6-7
|
57
57
|
|
58
58
|
Collect
|
59
59
|
-------
|
60
|
-
|
61
60
|
Collect all product rows (2, 3 and 4) to the category product
|
62
61
|
|
63
62
|
$ sycsvpro -f in.csv -o out.csv collect -r 2-20 -c products:2-4
|
@@ -78,7 +77,6 @@ Collect all product rows (2, 3 and 4) to the category product
|
|
78
77
|
|
79
78
|
Map
|
80
79
|
---
|
81
|
-
|
82
80
|
Map the product names to new names
|
83
81
|
|
84
82
|
The mapping file (mapping) uses the result from the collect command above
|
@@ -110,7 +108,6 @@ Allocate all the machine types to the customer
|
|
110
108
|
|
111
109
|
Count
|
112
110
|
-----
|
113
|
-
|
114
111
|
Count all customers (key column) in rows 2 to 20 that have machines that start with *h* and have a contract valid beginning after 1.1.2000. Add a sum row with title Total at column 1
|
115
112
|
|
116
113
|
$ sycsvpro -f in.csv -o out.csv count -r 2-20 -k 0 -c 1:/^h/,5:">1.1.2000" --df "%d.%m.%Y" -s "Total:1"
|
@@ -126,18 +123,35 @@ The result in file out.csv is
|
|
126
123
|
|
127
124
|
Calc
|
128
125
|
----
|
129
|
-
|
130
126
|
Process arithmetic operations on the contract count and create a target column
|
131
127
|
|
132
128
|
$ sycsvpro -f in.csv -o out.csv calc -r 2-20 -h *,target -c 6:*2,7:target=c6*10
|
133
129
|
|
134
130
|
$ cat out.csv
|
135
131
|
customer;machine;control;drive;motor;date;contract;target
|
136
|
-
hello;h1;con123;dri120;mot100;1.
|
137
|
-
hello;h2;con123;dri130;mot110;1.
|
138
|
-
indix;i1;con456;dri130;mot090;
|
139
|
-
chiro;c1;con333;dri110;mot100;1.
|
140
|
-
chiro;c2;con331;dri100;mot130;
|
132
|
+
hello;h1;con123;dri120;mot100;1.01.3013;1
|
133
|
+
hello;h2;con123;dri130;mot110;1.02.3012;1
|
134
|
+
indix;i1;con456;dri130;mot090;5.11.3013;1
|
135
|
+
chiro;c1;con333;dri110;mot100;1.10.3011;1
|
136
|
+
chiro;c2;con331;dri100;mot130;3.05.3010;1
|
137
|
+
|
138
|
+
Sort
|
139
|
+
----
|
140
|
+
Sort rows on specified columns as an example sort rows based on customer (string s) and contract date (date d)
|
141
|
+
|
142
|
+
$ sycsvpro -f in.csv -o out.csv sort -r 2-20 -c s:0,d:5
|
143
|
+
|
144
|
+
hello;h2;con123;dri130;mot110;1.02.3012;1
|
145
|
+
hello;h1;con123;dri120;mot100;1.01.3013;1
|
146
|
+
indix;i1;con456;dri130;mot090;5.11.3013;1
|
147
|
+
chiro;c2;con331;dri100;mot130;3.05.3010;1
|
148
|
+
chiro;c1;con333;dri110;mot100;1.10.3011;1
|
149
|
+
|
150
|
+
Insert
|
151
|
+
------
|
152
|
+
Add rows at the bottom or on top of a file. The command below adds the content of the file file-with-rows-to-insert.text on top of the file in.csv and saves it to out.csv
|
153
|
+
|
154
|
+
$ sycsvpro -f in.csv -o out.csv insert file-with-rows-to-insert.txt -p top
|
141
155
|
|
142
156
|
Edit
|
143
157
|
----
|
@@ -147,7 +161,7 @@ Creates or if it exists opens a file for editing. The file is created in the dir
|
|
147
161
|
|
148
162
|
List
|
149
163
|
----
|
150
|
-
List the scripts available in the scripts directory
|
164
|
+
List the scripts or insert-file available in the scripts directory
|
151
165
|
|
152
166
|
$ sycsvpro list -m
|
153
167
|
script.rb
|
@@ -155,7 +169,6 @@ List the scripts available in the scripts directory
|
|
155
169
|
|
156
170
|
Execute
|
157
171
|
-------
|
158
|
-
|
159
172
|
Execute takes a Ruby script file as an argument and processes the script. The following command executes the script *script.rb* and invokes the method *calc*
|
160
173
|
|
161
174
|
$ sycsvpro execute ./script.rb calc
|
@@ -212,5 +225,10 @@ A work flow could be as follows
|
|
212
225
|
* Extract rows and columns of interest `extract`
|
213
226
|
* Count values `count`
|
214
227
|
* Do arithmetic operations on the values `calc`
|
228
|
+
* Sort the rows based on column values
|
215
229
|
|
216
230
|
When I have analyzed the data I use _Microsoft Excel_ or _LibreOffice Calc_ to create nice graphs. To create more sophisiticated analysis *R* is the right tool to use.
|
231
|
+
|
232
|
+
Installation
|
233
|
+
============
|
234
|
+
[](http://badge.fury.io/rb/sycsvpro)
|
data/README.rdoc
CHANGED
@@ -6,6 +6,7 @@ License:: Distributed uder the MIT license, see LICENSE in the source distro
|
|
6
6
|
|
7
7
|
The application provides an interface for analyzing, cleaning and operating on csv files
|
8
8
|
|
9
|
+
{<img src="https://badge.fury.io/rb/sycsvpro.png" alt="Gem Version" />}[http://badge.fury.io/rb/sycsvpro]
|
9
10
|
|
10
11
|
== Install
|
11
12
|
|
data/bin/sycsvpro
CHANGED
@@ -114,14 +114,13 @@ command :allocate do |c|
|
|
114
114
|
end
|
115
115
|
end
|
116
116
|
|
117
|
-
desc 'Creates a script file or opens a script file for editing if it exists'
|
117
|
+
desc 'Creates a script/insert file or opens a script/insert file for editing if it exists'
|
118
118
|
command :edit do |c|
|
119
|
-
c.desc 'Name of the script file'
|
120
|
-
c.
|
121
|
-
c.
|
122
|
-
c.flag [:s, :script], :must_match => /^\w+\.rb/
|
119
|
+
c.desc 'Name of the script/insert file'
|
120
|
+
c.arg_name 'SCRIPT_NAME.rb|INSERT_NAME.ins'
|
121
|
+
c.flag [:s, :script], :must_match => /^\w+\.rb|^\w+\.ins/
|
123
122
|
|
124
|
-
c.desc 'Method to create'
|
123
|
+
c.desc 'Method to create in combination with a script file'
|
125
124
|
c.arg_name 'METHOD_NAME'
|
126
125
|
c.flag [:m, :method], :must_match => /^\w+/
|
127
126
|
|
@@ -132,17 +131,22 @@ command :edit do |c|
|
|
132
131
|
end
|
133
132
|
end
|
134
133
|
|
135
|
-
desc 'Lists
|
134
|
+
desc 'Lists script or insert files in the scripts directory with optionally listing methods of script files'
|
136
135
|
command :list do |c|
|
136
|
+
c.desc 'Type of script (Ruby or insert file)'
|
137
|
+
c.default_value 'script'
|
138
|
+
c.arg_name 'SCRIPT|INSERT'
|
139
|
+
c.flag [:t, :type], :must_match => /script|insert/i
|
140
|
+
|
137
141
|
c.desc 'Name of the script file'
|
138
|
-
c.arg_name 'SCRIPT_NAME.rb'
|
139
|
-
c.flag [:s, :script], :must_match => /^\w+\.rb/
|
142
|
+
c.arg_name 'SCRIPT_NAME.rb|INSERT_NAME.ins'
|
143
|
+
c.flag [:s, :script], :must_match => /^\w+\.rb|^\w+\.ins/
|
140
144
|
|
141
145
|
c.desc 'Show methods'
|
142
146
|
c.switch [:m, :method]
|
143
147
|
|
144
148
|
c.action do |global_options,options,args|
|
145
|
-
script_list = Sycsvpro::ScriptList.new(dir: script_directory,
|
149
|
+
script_list = Sycsvpro::ScriptList.new(dir: script_directory, type: options[:t],
|
146
150
|
script: options[:s], show_methods: options[:m])
|
147
151
|
|
148
152
|
scripts = script_list.execute
|
@@ -213,6 +217,59 @@ command :count do |c|
|
|
213
217
|
counter.execute
|
214
218
|
puts "done"
|
215
219
|
end
|
220
|
+
|
221
|
+
end
|
222
|
+
|
223
|
+
desc 'Sort rows based on column values'
|
224
|
+
command :sort do |c|
|
225
|
+
c.desc 'Rows to consider'
|
226
|
+
c.arg_name '1,2,10-30|REGEXP'
|
227
|
+
c.flag [:r, :row], :must_match => /\d+(?:,\d+|-\d+|,\/.*\/)*|\/.*\/(?:,\/.*\/|\d+)*/
|
228
|
+
|
229
|
+
c.desc 'Columns to sort based on a type (n = number, s = string, d = date) and its value'
|
230
|
+
c.arg_name 'n:1,s:2-5,d:7'
|
231
|
+
c.flag [:c, :col], :must_match => /[d|n|s]:\d+(?:-\d+|,[d|n|s]:\d+)*/
|
232
|
+
|
233
|
+
c.desc 'Format of date values'
|
234
|
+
c.arg_name '%d.%m.%Y|%m/%d/%Y|...'
|
235
|
+
c.default_value '%Y-%m-%d'
|
236
|
+
c.flag [:df]
|
237
|
+
|
238
|
+
c.desc 'Sort order descending - default ascending'
|
239
|
+
c.switch [:d, :desc]
|
240
|
+
|
241
|
+
c.action do |global_options,options,args|
|
242
|
+
sorter = Sycsvpro::Sorter.new(infile: global_options[:f], outfile: global_options[:o],
|
243
|
+
rows: options[:r], cols: options[:c], df: options[:df],
|
244
|
+
desc: options[:d])
|
245
|
+
print 'Sorting...'
|
246
|
+
sorter.execute
|
247
|
+
print 'done'
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
desc 'Inserts rows from a file to a csv-file'
|
252
|
+
arg_name 'INSERT_FILE'
|
253
|
+
command :insert do |c|
|
254
|
+
|
255
|
+
c.desc 'Position TOP or BOTTOM where to insert the rows'
|
256
|
+
c.default_value 'top'
|
257
|
+
c.arg_name 'top|bottom'
|
258
|
+
c.flag [:p, :position], :must_match => /^top|^bottom/i
|
259
|
+
|
260
|
+
c.action do |global_options,options,args|
|
261
|
+
help_now! "You need to provide an insert file" if args.size == 0
|
262
|
+
|
263
|
+
insert_file = File.expand_path(args[0])
|
264
|
+
insert_file = File.join(script_directory, args[0]) unless File.exists? insert_file
|
265
|
+
help_now! "Insert file #{insert_file} doesn't exist!" unless File.exists? insert_file
|
266
|
+
|
267
|
+
print "Inserting..."
|
268
|
+
inserter = Sycsvpro::Inserter.new(infile: global_options[:f], outfile: global_options[:o],
|
269
|
+
insert: insert_file, position: options[:p])
|
270
|
+
inserter.execute
|
271
|
+
puts "done"
|
272
|
+
end
|
216
273
|
end
|
217
274
|
|
218
275
|
desc 'Map values in columns to new values'
|
@@ -275,7 +332,7 @@ pre do |global,command,options,args|
|
|
275
332
|
case command.name
|
276
333
|
when :analyze
|
277
334
|
help_now! "You need to provide an input file '-f FILE'" if global[:f].nil?
|
278
|
-
when :allocate, :calc, :collect, :count, :extract, :map
|
335
|
+
when :allocate, :calc, :collect, :count, :extract, :map, :sort
|
279
336
|
help_now! "You need to provide an input file '-f FILE'" if global[:f].nil?
|
280
337
|
help_now! "You need to provide a result file '-o OUT_FILE'" if global[:o].nil?
|
281
338
|
end
|
@@ -290,10 +347,12 @@ pre do |global,command,options,args|
|
|
290
347
|
|
291
348
|
# Creates statistics on the command operation
|
292
349
|
Stats = Struct.new(:command, :start, :end, :count) do
|
350
|
+
# Calcualates the total duration
|
293
351
|
def duration
|
294
352
|
self.end - self.start
|
295
353
|
end
|
296
354
|
|
355
|
+
# Calculates the average time per row processing
|
297
356
|
def average
|
298
357
|
if count > 0
|
299
358
|
(self.end - self.start) * 1000 / self.count
|
@@ -302,6 +361,7 @@ pre do |global,command,options,args|
|
|
302
361
|
end
|
303
362
|
end
|
304
363
|
|
364
|
+
# Prints the statistics
|
305
365
|
def to_s
|
306
366
|
if count > 0
|
307
367
|
sprintf("%s %.5f %s %d %s %.5f %s", "'#{self.command}' has run",
|
data/html/README_rdoc.html
CHANGED
@@ -99,6 +99,9 @@ href="mailto:pierre@sugaryourcoffee.de">pierre@sugaryourcoffee.de</a>)</p>
|
|
99
99
|
<p>The application provides an interface for analyzing, cleaning and operating
|
100
100
|
on csv files</p>
|
101
101
|
|
102
|
+
<p><a href="http://badge.fury.io/rb/sycsvpro"><img
|
103
|
+
src="https://badge.fury.io/rb/sycsvpro.png" alt="Gem Version" /></a></p>
|
104
|
+
|
102
105
|
<h2 id="label-Install">Install<span><a href="#label-Install">¶</a> <a href="#documentation">↑</a></span></h2>
|
103
106
|
|
104
107
|
<p>Install:</p>
|
@@ -144,7 +147,7 @@ bin</pre>
|
|
144
147
|
|
145
148
|
<p>VERSION</p>
|
146
149
|
|
147
|
-
<pre>0.0.
|
150
|
+
<pre>0.0.8</pre>
|
148
151
|
|
149
152
|
<p>GLOBAL OPTIONS</p>
|
150
153
|
|
@@ -166,7 +169,10 @@ count - Counts the occurences of column values. Uses column values as heading
|
|
166
169
|
execute - Executes the code provided in a file
|
167
170
|
extract - Extract specified rows and columns from the file
|
168
171
|
help - Shows a list of commands or help for one command
|
169
|
-
|
172
|
+
insert - Inserts rows from a file to a csv-file
|
173
|
+
list - List scripts in the scripts directory with optionally listing methods
|
174
|
+
map - Map values in columns to new values
|
175
|
+
sort - Sort columns based on column values</pre>
|
170
176
|
</main>
|
171
177
|
|
172
178
|
|
@@ -0,0 +1,187 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<meta charset="UTF-8">
|
6
|
+
|
7
|
+
<title>class Sycsvpro::ColumnTypeFilter - Your application title</title>
|
8
|
+
|
9
|
+
<link href="../fonts.css" rel="stylesheet">
|
10
|
+
<link href="../rdoc.css" rel="stylesheet">
|
11
|
+
|
12
|
+
<script type="text/javascript">
|
13
|
+
var rdoc_rel_prefix = "../";
|
14
|
+
</script>
|
15
|
+
|
16
|
+
<script src="../js/jquery.js"></script>
|
17
|
+
<script src="../js/navigation.js"></script>
|
18
|
+
<script src="../js/search_index.js"></script>
|
19
|
+
<script src="../js/search.js"></script>
|
20
|
+
<script src="../js/searcher.js"></script>
|
21
|
+
<script src="../js/darkfish.js"></script>
|
22
|
+
|
23
|
+
|
24
|
+
<body id="top" role="document" class="class">
|
25
|
+
<nav role="navigation">
|
26
|
+
<div id="project-navigation">
|
27
|
+
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
|
28
|
+
<h2>
|
29
|
+
<a href="../index.html" rel="home">Home</a>
|
30
|
+
</h2>
|
31
|
+
|
32
|
+
<div id="table-of-contents-navigation">
|
33
|
+
<a href="../table_of_contents.html#pages">Pages</a>
|
34
|
+
<a href="../table_of_contents.html#classes">Classes</a>
|
35
|
+
<a href="../table_of_contents.html#methods">Methods</a>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
|
39
|
+
<div id="search-section" role="search" class="project-section initially-hidden">
|
40
|
+
<form action="#" method="get" accept-charset="utf-8">
|
41
|
+
<div id="search-field-wrapper">
|
42
|
+
<input id="search-field" role="combobox" aria-label="Search"
|
43
|
+
aria-autocomplete="list" aria-controls="search-results"
|
44
|
+
type="text" name="search" placeholder="Search" spellcheck="false"
|
45
|
+
title="Type to search, Up and Down to navigate, Enter to load">
|
46
|
+
</div>
|
47
|
+
|
48
|
+
<ul id="search-results" aria-label="Search Results"
|
49
|
+
aria-busy="false" aria-expanded="false"
|
50
|
+
aria-atomic="false" class="initially-hidden"></ul>
|
51
|
+
</form>
|
52
|
+
</div>
|
53
|
+
|
54
|
+
</div>
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
<div id="class-metadata">
|
59
|
+
|
60
|
+
<div id="parent-class-section" class="nav-section">
|
61
|
+
<h3>Parent</h3>
|
62
|
+
|
63
|
+
|
64
|
+
<p class="link"><a href="ColumnFilter.html">Sycsvpro::ColumnFilter</a>
|
65
|
+
|
66
|
+
</div>
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
<!-- Method Quickref -->
|
71
|
+
<div id="method-list-section" class="nav-section">
|
72
|
+
<h3>Methods</h3>
|
73
|
+
|
74
|
+
<ul class="link-list" role="directory">
|
75
|
+
|
76
|
+
<li class="calls-super" ><a href="#method-i-process">#process</a>
|
77
|
+
|
78
|
+
</ul>
|
79
|
+
</div>
|
80
|
+
|
81
|
+
</div>
|
82
|
+
</nav>
|
83
|
+
|
84
|
+
<main role="main" aria-labelledby="class-Sycsvpro::ColumnTypeFilter">
|
85
|
+
<h1 id="class-Sycsvpro::ColumnTypeFilter" class="class">
|
86
|
+
class Sycsvpro::ColumnTypeFilter
|
87
|
+
</h1>
|
88
|
+
|
89
|
+
<section class="description">
|
90
|
+
|
91
|
+
<p>Create a filter based on a colum and its type</p>
|
92
|
+
|
93
|
+
</section>
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
<section id="5Buntitled-5D" class="documentation-section">
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
|
108
|
+
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
|
109
|
+
<header>
|
110
|
+
<h3>Public Instance Methods</h3>
|
111
|
+
</header>
|
112
|
+
|
113
|
+
|
114
|
+
<div id="method-i-process" class="method-detail ">
|
115
|
+
|
116
|
+
<div class="method-heading">
|
117
|
+
<span class="method-name">process</span><span
|
118
|
+
class="method-args">(object, options={})</span>
|
119
|
+
|
120
|
+
<span class="method-click-advice">click to toggle source</span>
|
121
|
+
|
122
|
+
</div>
|
123
|
+
|
124
|
+
|
125
|
+
<div class="method-description">
|
126
|
+
|
127
|
+
<p>Processes the filter and returns the filtered columns</p>
|
128
|
+
|
129
|
+
|
130
|
+
<div class="method-calls-super">
|
131
|
+
Calls superclass method
|
132
|
+
<a href="ColumnFilter.html#method-i-process">Sycsvpro::ColumnFilter#process</a>
|
133
|
+
</div>
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
<div class="method-source-code" id="process-source">
|
138
|
+
<pre><span class="ruby-comment"># File lib/sycsvpro/column_type_filter.rb, line 8</span>
|
139
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">process</span>(<span class="ruby-identifier">object</span>, <span class="ruby-identifier">options</span>={})
|
140
|
+
<span class="ruby-identifier">filtered</span> = <span class="ruby-keyword">super</span>(<span class="ruby-identifier">object</span>, <span class="ruby-identifier">options</span>)
|
141
|
+
|
142
|
+
<span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">filtered</span>.<span class="ruby-identifier">nil?</span>
|
143
|
+
|
144
|
+
<span class="ruby-identifier">values</span> = <span class="ruby-identifier">filtered</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">';'</span>)
|
145
|
+
|
146
|
+
<span class="ruby-identifier">values</span>.<span class="ruby-identifier">each_with_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">value</span>, <span class="ruby-identifier">index</span><span class="ruby-operator">|</span>
|
147
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">types</span>[<span class="ruby-identifier">index</span>] <span class="ruby-operator">==</span> <span class="ruby-string">'n'</span>
|
148
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">value</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/\./</span>
|
149
|
+
<span class="ruby-identifier">number_value</span> = <span class="ruby-identifier">value</span>.<span class="ruby-identifier">to_f</span>
|
150
|
+
<span class="ruby-keyword">else</span>
|
151
|
+
<span class="ruby-identifier">number_value</span> = <span class="ruby-identifier">value</span>.<span class="ruby-identifier">to_i</span>
|
152
|
+
<span class="ruby-keyword">end</span>
|
153
|
+
<span class="ruby-identifier">values</span>[<span class="ruby-identifier">index</span>] = <span class="ruby-identifier">number_value</span>
|
154
|
+
<span class="ruby-keyword">elsif</span> <span class="ruby-identifier">types</span>[<span class="ruby-identifier">index</span>] <span class="ruby-operator">==</span> <span class="ruby-string">'d'</span>
|
155
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">empty?</span>
|
156
|
+
<span class="ruby-identifier">date</span> = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">strptime</span>(<span class="ruby-string">'9999-9-9'</span>, <span class="ruby-string">'%Y-%m-%d'</span>)
|
157
|
+
<span class="ruby-keyword">else</span>
|
158
|
+
<span class="ruby-identifier">date</span> = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">strptime</span>(<span class="ruby-identifier">value</span>, <span class="ruby-identifier">date_format</span>)
|
159
|
+
<span class="ruby-keyword">end</span>
|
160
|
+
<span class="ruby-identifier">values</span>[<span class="ruby-identifier">index</span>] = <span class="ruby-identifier">date</span>
|
161
|
+
<span class="ruby-keyword">end</span>
|
162
|
+
<span class="ruby-keyword">end</span>
|
163
|
+
|
164
|
+
<span class="ruby-identifier">values</span>
|
165
|
+
<span class="ruby-keyword">end</span></pre>
|
166
|
+
</div>
|
167
|
+
|
168
|
+
</div>
|
169
|
+
|
170
|
+
|
171
|
+
|
172
|
+
|
173
|
+
</div>
|
174
|
+
|
175
|
+
|
176
|
+
</section>
|
177
|
+
|
178
|
+
</section>
|
179
|
+
</main>
|
180
|
+
|
181
|
+
|
182
|
+
<footer id="validator-badges" role="contentinfo">
|
183
|
+
<p><a href="http://validator.w3.org/check/referer">Validate</a>
|
184
|
+
<p>Generated by <a href="http://rdoc.rubyforge.org">RDoc</a> 4.1.1.
|
185
|
+
<p>Based on <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
|
186
|
+
</footer>
|
187
|
+
|
data/html/Sycsvpro/Filter.html
CHANGED
@@ -170,6 +170,19 @@ to override the process method</p>
|
|
170
170
|
</div>
|
171
171
|
</div>
|
172
172
|
|
173
|
+
<div id="attribute-i-types" class="method-detail">
|
174
|
+
<div class="method-heading attribute-method-heading">
|
175
|
+
<span class="method-name">types</span><span
|
176
|
+
class="attribute-access-type">[R]</span>
|
177
|
+
</div>
|
178
|
+
|
179
|
+
<div class="method-description">
|
180
|
+
|
181
|
+
<p>Type of column (n = number, s = string)</p>
|
182
|
+
|
183
|
+
</div>
|
184
|
+
</div>
|
185
|
+
|
173
186
|
</section>
|
174
187
|
|
175
188
|
|
@@ -199,10 +212,11 @@ to override the process method</p>
|
|
199
212
|
|
200
213
|
|
201
214
|
<div class="method-source-code" id="new-source">
|
202
|
-
<pre><span class="ruby-comment"># File lib/sycsvpro/filter.rb, line
|
215
|
+
<pre><span class="ruby-comment"># File lib/sycsvpro/filter.rb, line 22</span>
|
203
216
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">values</span>, <span class="ruby-identifier">options</span>={})
|
204
217
|
<span class="ruby-ivar">@date_format</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:df</span>] <span class="ruby-operator">||</span> <span class="ruby-string">"%Y-%m-%d"</span>
|
205
218
|
<span class="ruby-ivar">@filter</span> = []
|
219
|
+
<span class="ruby-ivar">@types</span> = []
|
206
220
|
<span class="ruby-ivar">@pattern</span> = []
|
207
221
|
<span class="ruby-ivar">@pivot</span> = {}
|
208
222
|
<span class="ruby-identifier">create_filter</span>(<span class="ruby-identifier">values</span>)
|
@@ -245,7 +259,7 @@ otherwise false</p>
|
|
245
259
|
|
246
260
|
|
247
261
|
<div class="method-source-code" id="has_filter-3F-source">
|
248
|
-
<pre><span class="ruby-comment"># File lib/sycsvpro/filter.rb, line
|
262
|
+
<pre><span class="ruby-comment"># File lib/sycsvpro/filter.rb, line 64</span>
|
249
263
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">has_filter?</span>
|
250
264
|
<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
265
|
<span class="ruby-keyword">end</span></pre>
|
@@ -283,10 +297,12 @@ otherwise false</p>
|
|
283
297
|
|
284
298
|
|
285
299
|
<div class="method-source-code" id="method_missing-source">
|
286
|
-
<pre><span class="ruby-comment"># File lib/sycsvpro/filter.rb, line
|
300
|
+
<pre><span class="ruby-comment"># File lib/sycsvpro/filter.rb, line 32</span>
|
287
301
|
<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">&</span><span class="ruby-identifier">block</span>)
|
288
302
|
<span class="ruby-keyword">return</span> <span class="ruby-identifier">equal</span>(<span class="ruby-node">$1</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">block</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">id</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/^(\d+)$/</span>
|
303
|
+
<span class="ruby-keyword">return</span> <span class="ruby-identifier">equal_type</span>(<span class="ruby-node">$1</span>, <span class="ruby-node">$2</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">block</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">id</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/^(s|n|d):(\d+)$/</span>
|
289
304
|
<span class="ruby-keyword">return</span> <span class="ruby-identifier">range</span>(<span class="ruby-node">$1</span>, <span class="ruby-node">$2</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">block</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">id</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/^(\d+)-(\d+)$/</span>
|
305
|
+
<span class="ruby-keyword">return</span> <span class="ruby-identifier">range_type</span>(<span class="ruby-node">$1</span>, <span class="ruby-node">$2</span>, <span class="ruby-node">$3</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">block</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">id</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/^(s|n|d):(\d+)-(\d+)$/</span>
|
290
306
|
<span class="ruby-keyword">return</span> <span class="ruby-identifier">regex</span>(<span class="ruby-node">$1</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">block</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">id</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/^\/(.*)\/$/</span>
|
291
307
|
<span class="ruby-keyword">return</span> <span class="ruby-identifier">col_regex</span>(<span class="ruby-node">$1</span>, <span class="ruby-node">$2</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">block</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">id</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/^(\d+):\/(.*)\/$/</span>
|
292
308
|
<span class="ruby-keyword">return</span> <span class="ruby-identifier">date</span>(<span class="ruby-node">$1</span>, <span class="ruby-node">$2</span>, <span class="ruby-node">$3</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">block</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">id</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/^(\d+):(<|=|>)(\d+.\d+.\d+)/</span>
|
@@ -322,7 +338,7 @@ otherwise false</p>
|
|
322
338
|
|
323
339
|
|
324
340
|
<div class="method-source-code" id="pivot_each_column-source">
|
325
|
-
<pre><span class="ruby-comment"># File lib/sycsvpro/filter.rb, line
|
341
|
+
<pre><span class="ruby-comment"># File lib/sycsvpro/filter.rb, line 50</span>
|
326
342
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">pivot_each_column</span>(<span class="ruby-identifier">values</span>=[])
|
327
343
|
<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
344
|
<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>]
|
@@ -364,7 +380,7 @@ otherwise false</p>
|
|
364
380
|
|
365
381
|
|
366
382
|
<div class="method-source-code" id="process-source">
|
367
|
-
<pre><span class="ruby-comment"># File lib/sycsvpro/filter.rb, line
|
383
|
+
<pre><span class="ruby-comment"># File lib/sycsvpro/filter.rb, line 45</span>
|
368
384
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">process</span>(<span class="ruby-identifier">object</span>, <span class="ruby-identifier">options</span>={})
|
369
385
|
<span class="ruby-identifier">raise</span> <span class="ruby-string">'Needs to be overridden by sub class'</span>
|
370
386
|
<span class="ruby-keyword">end</span></pre>
|