csv_to_object 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  module CsvToObject
2
- VERSION = "1.0.1"
2
+ VERSION = "1.0.2"
3
3
  end
data/lib/csv_to_object.rb CHANGED
@@ -1,3 +1,4 @@
1
+ #coding: utf-8
1
2
  require "csv_to_object/version"
2
3
  require 'csv'
3
4
 
@@ -8,7 +9,7 @@ module CsvToObject
8
9
  def initialize(input_path)
9
10
  @input_path = File.open(input_path)
10
11
  end
11
-
12
+
12
13
  # Converts the data lines of the csv file to objects.
13
14
  # Objects have the class of the name of the csv file.
14
15
  # The first line of the csv file defines the attribute names for the data lines.
@@ -18,22 +19,22 @@ module CsvToObject
18
19
  def to_objects
19
20
  objects = []
20
21
  file = File.open(@input_path)
21
- CSV.table(file, {header_converters: header_converter}).each do |row|
22
+ CSV.table(file, {header_converters: header_converter, encoding: "ISO-8859-1"}).each do |row|
22
23
  objects << new_object(row.to_hash)
23
24
  end
24
25
  objects
25
26
  end
26
-
27
+
27
28
  private
28
-
29
+
29
30
  def header_converter
30
31
  lambda { |h| h.encode(CSV::ConverterEncoding).downcase.gsub(/\s+/, "_") }
31
32
  end
32
-
33
+
33
34
  def new_object(attrs)
34
35
  @object ? @object.new(attrs) : object_to_create().new(attrs)
35
36
  end
36
-
37
+
37
38
  def object_to_create()
38
39
  class_name = File.basename(@input_path).gsub('.csv','').capitalize
39
40
  @object = Object::const_get(class_name)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: csv_to_object
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-09-06 00:00:00.000000000 Z
13
+ date: 2013-04-24 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec
@@ -69,7 +69,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
69
69
  version: '0'
70
70
  requirements: []
71
71
  rubyforge_project:
72
- rubygems_version: 1.8.21
72
+ rubygems_version: 1.8.24
73
73
  signing_key:
74
74
  specification_version: 3
75
75
  summary: Given the path to a CSV file, will return a collection of objects. The csv