Module: CsvClassMaker::CsvFind::ClassMethods
- Defined in:
- lib/csv_class_maker/csv_find.rb
Instance Method Summary collapse
- #all ⇒ Object
- #csv_file(file_name, options = {}) ⇒ Object
- #define_accessors ⇒ Object
- #each ⇒ Object
- #file ⇒ Object
- #file_options ⇒ Object
- #find(line_number) ⇒ Object
- #find_all_by(key_val_pair) ⇒ Object
- #find_by(key_val_pair) ⇒ Object
- #first ⇒ Object
- #first_line ⇒ Object
- #headers ⇒ Object
- #last ⇒ Object
- #last_line ⇒ Object
- #middle_line ⇒ Object
Instance Method Details
#all ⇒ Object
55 56 57 58 |
# File 'lib/csv_class_maker/csv_find.rb', line 55 def all rewind file.map { |row| build_instance(row, file.lineno) } end |
#csv_file(file_name, options = {}) ⇒ Object
29 30 31 32 33 34 35 36 37 38 |
# File 'lib/csv_class_maker/csv_find.rb', line 29 def csv_file(file_name, = {}) @@file_options = @@file = CSV.new(File.open(file_name, 'r'), @@file_options) @@first_line = 2 @@last_line = `wc -l #{file_name}`.split(' ').first.to_i @@middle_line = (@@last_line/2)+1 @line_number = nil extract_headers(file_name, ) define_accessors end |
#define_accessors ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/csv_class_maker/csv_find.rb', line 47 def define_accessors headers.each do |header| self.send(:attr_accessor, header) end # self.send(:attr_accessor, :line_number) end |
#each ⇒ Object
90 91 92 93 94 95 |
# File 'lib/csv_class_maker/csv_find.rb', line 90 def each rewind (first_line..last_line).each do |line_number| yield find(line_number) end end |
#file ⇒ Object
41 |
# File 'lib/csv_class_maker/csv_find.rb', line 41 def file; return @@file; end |
#file_options ⇒ Object
45 |
# File 'lib/csv_class_maker/csv_find.rb', line 45 def ; return @@file_options; end |
#find(line_number) ⇒ Object
69 70 71 72 73 74 75 76 77 |
# File 'lib/csv_class_maker/csv_find.rb', line 69 def find(line_number) row = if (first_line..last_line).include? line_number front_find(line_number, file.path) elsif (middle_line..last_line).include? line_number back_find(line_number, file.path) end row.nil? ? row : build_instance(row, line_number) end |
#find_all_by(key_val_pair) ⇒ Object
65 66 67 |
# File 'lib/csv_class_maker/csv_find.rb', line 65 def find_all_by(key_val_pair) search(key_val_pair).map { |row| build_instance(row, row[:line_number]) } end |
#find_by(key_val_pair) ⇒ Object
60 61 62 63 |
# File 'lib/csv_class_maker/csv_find.rb', line 60 def find_by(key_val_pair) row = search(key_val_pair).last build_instance(row, row[:line_number]) end |
#first ⇒ Object
79 80 81 82 |
# File 'lib/csv_class_maker/csv_find.rb', line 79 def first rewind build_instance(file.first, first_line) end |
#first_line ⇒ Object
42 |
# File 'lib/csv_class_maker/csv_find.rb', line 42 def first_line; return @@first_line; end |
#headers ⇒ Object
40 |
# File 'lib/csv_class_maker/csv_find.rb', line 40 def headers; return @@headers; end |
#last ⇒ Object
84 85 86 87 88 |
# File 'lib/csv_class_maker/csv_find.rb', line 84 def last command = `head -n 1 #{file.path} && tail -n 1 #{file.path}` last_row = CSV.new(command, ).first build_instance(last_row, last_line) end |
#last_line ⇒ Object
44 |
# File 'lib/csv_class_maker/csv_find.rb', line 44 def last_line; return @@last_line; end |
#middle_line ⇒ Object
43 |
# File 'lib/csv_class_maker/csv_find.rb', line 43 def middle_line; return @@middle_line; end |