csv_class_maker 0.2.0 → 0.2.1

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