csv_class_maker 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c337d2fc536792c333afc49688af5945e8e7892d
4
- data.tar.gz: dc35299f89d9048ce49ffb867cedcb139e7fbd49
3
+ metadata.gz: 1b8b85b814a7b26331ffd7677f375a0eb8f9c5bb
4
+ data.tar.gz: 90ee267cefb5291d54b77c6753f2423091126aa3
5
5
  SHA512:
6
- metadata.gz: 80c3f72db74a092de09ffcec7c361304f4a5f5ee13a18440b6f18a43109d95b7c1ad50cde9937f3c378d4381de6b114e963b8b7203a8540cfc47838a82efa8ae
7
- data.tar.gz: fb6bb09b68875cf5cbc2c0bc763254eee695a6f905c6f129e82d4ccdee896eb5789326aa884cb694879bc52bec073bb054da2317e4f631c8cf213e6c5e8fafa5
6
+ metadata.gz: a5b71f57eb29c3a6eb1cbef8b5308e717f73f07766d491f4facaa65603d1111c5d31c36e48716250f88605d7747c4acb58fb34b4742ae7252bf00a65719204dc
7
+ data.tar.gz: ae2ec65f7486a935e00102b6437044c9e972f59b69021907282d549082aa03b82cf03f496949ad419c6a9829529c51ca57869e5617260261f207b7e1fe989307
@@ -21,24 +21,26 @@ module CsvClassMaker
21
21
  @@file = CSV.new(File.open(file_name,'r'), headers: true, header_converters: :symbol, return_headers: false)
22
22
  @@first_line = 2
23
23
  @@last_line = `wc -l #{file_name}`.split(' ').first.to_i
24
+ @@middle_line = (@@last_line/2)+1
24
25
  @line_number = nil
25
26
 
26
27
  attr_accessor :line_number
27
28
 
28
29
  def self.file; return @@file; end
29
30
  def self.first_line; return @@first_line; end
31
+ def self.middle_line; return @@middle_line; end
30
32
  def self.last_line; return @@last_line; end
31
33
 
32
34
  # End of class definition.
33
35
 
34
36
  }
35
37
  end
36
-
38
+
37
39
  private
38
40
 
39
41
  def self.extract_headers(file_name)
40
42
  @csv_headers = []
41
- CSV.new(File.open(file_name,'r'), headers: true, header_converters: :symbol, return_headers: true).first.each do |headers, values|
43
+ CSV.new(File.open(file_name,'r'), headers: true, header_converters: :symbol, return_headers: true).first.each do |headers, values|
42
44
  @csv_headers << headers
43
45
  end
44
46
  @csv_headers
@@ -23,14 +23,13 @@ module CsvClassMaker::CsvFind
23
23
 
24
24
  def find(line_number)
25
25
  if (first_line..last_line).include? line_number
26
- row = CSV.new(`head -n 1 #{file.path} && head -n #{line_number} #{file.path} | tail -n 1`, headers: true, header_converters: :symbol, return_headers: false).first
27
- build_instance row, line_number
28
- elsif ((last_line/2+1)..last_line).include? line_number
29
- row = CSV.new(`head -n 1 #{file.path} && tail -n #{last_line - line_number} #{file.path} | head -n 1`, headers: true, header_converters: :symbol, return_headers: false).first
30
- build_instance row, line_number
26
+ row = front_find(line_number, file.path)
27
+ elsif (middle_line..last_line).include? line_number
28
+ row = back_find(line_number, file.path)
31
29
  else
32
- nil
30
+ row = nil
33
31
  end
32
+ row.nil? ? nil : build_instance(row, line_number)
34
33
  end
35
34
 
36
35
  def first
@@ -93,4 +92,11 @@ module CsvClassMaker::CsvFind
93
92
  @accumulator
94
93
  end
95
94
 
95
+ def front_find(line_number, file_path)
96
+ CSV.new(`head -n 1 #{file_path} && head -n #{line_number} #{file_path} | tail -n 1`, headers: true, header_converters: :symbol, return_headers: false).first
97
+ end
98
+ def back_find(line_number, file_path)
99
+ CSV.new(`head -n 1 #{file_path} && tail -n #{last_line - line_number} #{file_path} | head -n 1`, headers: true, header_converters: :symbol, return_headers: false).first
100
+ end
101
+
96
102
  end
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: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Platt