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.
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