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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/csv_class_maker/csv_find.rb +14 -16
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b032060813fda21e2eb3fde8b38f226e0e84cda9
4
- data.tar.gz: 8a29ae5280459bb8bd4ebee4152ea05778659c38
3
+ metadata.gz: 207394f7ae797a48015c6370a4d93c54c5b259f0
4
+ data.tar.gz: 60e2e85d26c52c4b004dfd0d02d4ba044a39af63
5
5
  SHA512:
6
- metadata.gz: 5f1b4b41e13cd8bf08448b18a95ad6841cfa6c8b90a7d291ccb2a334a7f1fd47a1ff841fae6b55a1096e3dcefab25294a3020b9fc5ed8d27b0f2e388ca231d82
7
- data.tar.gz: 37d0051e32be666203322d76d57e886add86f3fbc84e0897343e7bcbe8fe053a9164543126ae5db92f44d212ac755328f469fb4b43b7cc2e12ad4975106c2f20
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
- self.instance_variable_get(instance_variable) ==
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? line_number
65
+ row = if (first_line..middle_line).include?(line_number)
69
66
  front_find(line_number, file.path)
70
- elsif (middle_line..last_line).include? line_number
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 = self.new
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
- return new_instance
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.map do |row|
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.reject(&:nil?)
129
+ end
132
130
  end
133
131
 
134
132
  def front_find(line_number, file_path)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: csv_class_maker
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Platt