csv_class_maker 1.0.2 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/csv_class_maker/csv_find.rb +14 -16
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 207394f7ae797a48015c6370a4d93c54c5b259f0
|
4
|
+
data.tar.gz: 60e2e85d26c52c4b004dfd0d02d4ba044a39af63
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 12e9b06c9f6c93c1102540aeb464e7e8115fcab1f86a01c72078dd6a0e2d96365e00ee191b93a735fb291ddf293e365526998264f54636ad271dafb379ca51c0
|
7
|
+
data.tar.gz: 1023d9ae9a19fd18aeb5ed33f0fc7054e675947287f8918a7ec58d6726d3786379f6157d30738b2d4dd4fc82a9856e641f8ecbc834b9245e0ff63312d9a8520f
|
@@ -15,7 +15,7 @@ module CsvClassMaker::CsvFind
|
|
15
15
|
|
16
16
|
def ==(other_instance)
|
17
17
|
instance_variables.map do |instance_variable|
|
18
|
-
|
18
|
+
instance_variable_get(instance_variable) ==
|
19
19
|
other_instance.instance_variable_get(instance_variable)
|
20
20
|
end
|
21
21
|
end
|
@@ -26,24 +26,21 @@ module CsvClassMaker::CsvFind
|
|
26
26
|
end
|
27
27
|
|
28
28
|
module ClassMethods
|
29
|
+
|
30
|
+
attr_reader :headers, :file, :file_options,
|
31
|
+
:first_line, :middle_line, :last_line
|
32
|
+
|
29
33
|
def csv_file(file_name, options = {})
|
30
34
|
@file_options = options
|
31
35
|
@file = CSV.new(File.open(file_name, 'r'), @file_options)
|
32
36
|
@first_line = 2
|
33
37
|
@last_line = `wc -l #{file_name}`.split(' ').first.to_i
|
34
|
-
@middle_line = (@last_line/2)+1
|
38
|
+
@middle_line = (@last_line/2) + 1
|
35
39
|
@line_number = nil
|
36
40
|
extract_headers(file_name, options)
|
37
41
|
define_accessors
|
38
42
|
end
|
39
43
|
|
40
|
-
def headers; return @headers; end
|
41
|
-
def file; return @file; end
|
42
|
-
def first_line; return @first_line; end
|
43
|
-
def middle_line; return @middle_line; end
|
44
|
-
def last_line; return @last_line; end
|
45
|
-
def file_options; return @file_options; end
|
46
|
-
|
47
44
|
def define_accessors
|
48
45
|
headers.each do |header|
|
49
46
|
self.send(:attr_accessor, header)
|
@@ -65,9 +62,9 @@ module CsvClassMaker::CsvFind
|
|
65
62
|
end
|
66
63
|
|
67
64
|
def find(line_number)
|
68
|
-
row = if (first_line..middle_line).include?
|
65
|
+
row = if (first_line..middle_line).include?(line_number)
|
69
66
|
front_find(line_number, file.path)
|
70
|
-
|
67
|
+
else
|
71
68
|
back_find(line_number, file.path)
|
72
69
|
end
|
73
70
|
|
@@ -88,7 +85,7 @@ module CsvClassMaker::CsvFind
|
|
88
85
|
def each
|
89
86
|
rewind
|
90
87
|
(first_line..last_line).each do |line_number|
|
91
|
-
yield find(line_number)
|
88
|
+
yield find(line_number) if block_given?
|
92
89
|
end
|
93
90
|
end
|
94
91
|
|
@@ -103,10 +100,11 @@ module CsvClassMaker::CsvFind
|
|
103
100
|
end
|
104
101
|
|
105
102
|
def build_instance(row, line)
|
106
|
-
new_instance =
|
103
|
+
new_instance = new
|
107
104
|
row.each { |key, value| new_instance.send("#{key}=".to_sym, value) }
|
108
105
|
new_instance.line_number = line
|
109
|
-
|
106
|
+
|
107
|
+
new_instance
|
110
108
|
end
|
111
109
|
|
112
110
|
def rewind
|
@@ -124,11 +122,11 @@ module CsvClassMaker::CsvFind
|
|
124
122
|
end
|
125
123
|
|
126
124
|
def dig(hash_pair, rows)
|
127
|
-
rows.
|
125
|
+
rows.select do |row|
|
128
126
|
if row[hash_pair.first] == hash_pair.last
|
129
127
|
$. != last_line ? row.push(line_number: $.) : row
|
130
128
|
end
|
131
|
-
end
|
129
|
+
end
|
132
130
|
end
|
133
131
|
|
134
132
|
def front_find(line_number, file_path)
|