csv_class_maker 1.0.2 → 1.0.3
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/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)
|