contact_csv 0.1.0 → 0.2.0

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.
@@ -1,4 +1,10 @@
1
- == 0.0.1 2008-02-05
1
+ == 0.2.0 2008-02-07
2
+
3
+ * 1 major enhancement
4
+ * Removed the Importer class because it wasn't needed. Added the functionality to the ContactManager class
5
+ * Beefed up the documentation
6
+
7
+ == 0.1.0 2008-02-05
2
8
 
3
9
  * 1 major enhancement:
4
10
  * Initial release
@@ -9,7 +9,6 @@ lib/contact_csv.rb
9
9
  lib/contact_csv/contact.rb
10
10
  lib/contact_csv/contact_csv.rb
11
11
  lib/contact_csv/contact_manager.rb
12
- lib/contact_csv/importer.rb
13
12
  lib/contact_csv/lookup_tables/lookup_table.rb
14
13
  lib/contact_csv/lookup_tables/outlook_csv.rb
15
14
  lib/contact_csv/version.rb
@@ -23,10 +22,8 @@ tasks/website.rake
23
22
  test/outlook_contacts.csv
24
23
  test/outlook_contacts_dos.csv
25
24
  test/test_contact.rb
26
- test/test_contact_csv.rb
27
25
  test/test_contact_manager.rb
28
26
  test/test_helper.rb
29
- test/test_importer.rb
30
27
  test/test_lookup_table.rb
31
28
  website/index.html
32
29
  website/index.txt
data/README.txt CHANGED
@@ -1,20 +1,62 @@
1
1
  # === ContactCsv
2
+ #
3
+ # ==== Supported CSV
4
+ # * Outlook 2003 CSV (Windows)
2
5
  #
3
6
  # ==== Reading in CSV
4
7
  #
5
- # The two class methods are used to read in a CSV file of contacts exported by email clients such as Outlook or GMail. Both methods return an Array of Contact objects.
8
+ # The two class methods are used to read in a CSV file of contacts exported by email clients such as Outlook or GMail.
9
+ # Both methods return an Array of Contact objects.
6
10
  #
7
- # contacts = ContactCSV.read('/path/to/file.csv')
11
+ # contact_manager = ContactCsv::ContactManager.new
8
12
  #
9
- # contacts = ContactCSV.parse('csv,data,string')
13
+ # contact_manager.read('/path/to/file.csv')
14
+ # or
15
+ # contact_manager.parse('csv,data,string')
10
16
  #
11
17
  # ==== Getting the contacts
12
18
  #
13
- # contacts.each do |contact|
14
- # puts contact.name
15
- # puts contact.email
16
- # end
19
+ # contact_manager.contacts.each do |contact|
20
+ # puts contact.name
21
+ # puts contact.email
22
+ # puts contact.extras['Spouse']
23
+ # end
24
+ #
25
+ # See the Contact class for a complete list of attributes.
26
+ #
27
+ #
28
+ # ==== Lookup Tables
29
+ #
30
+ # A lookup table is used to map the csv columns to Contact class attributes. You can create your own lookup tables
31
+ # by using the LookupTable class and passing it in inside an array to the ContactManager class.
32
+ #
33
+ # # These are the column headers in the csv
34
+ # headers = ["First Name","Last Name","Email Address"]
35
+ #
36
+ # # These map the column headers to the attribute of the Contact class
37
+ # legend = {
38
+ # 'First Name' => :first_name,
39
+ # 'Last Name ' => :last_name,
40
+ # 'Email Address' => :email
41
+ # }
42
+ #
43
+ # lookup_table = LookupTable.new(headers, legend)
44
+ #
45
+ # # The lookup table is passed into the ContactManager
46
+ # contact_manager = ContactCsv::ContactManager.new([lookup_table])
47
+ # or
48
+ # contact_manager.lookup_tables << lookup_table
49
+ #
50
+ #
51
+ # If you think you have composed a good lookup table email it to me (mwhuss@gmail.com) and I will include it in the gem.
52
+ #
53
+ #
54
+ # ==== To Do
55
+ # * Add lookup table for Outlook 2003 CSV (DOS)
56
+ # * Add lookup table for GMail CSV
17
57
  #
18
- # See the Contact class for a complete list of attributes.
19
58
  #
20
59
  #
60
+
61
+
62
+
@@ -3,7 +3,6 @@ $:.unshift File.dirname(__FILE__)
3
3
  require 'rubygems'
4
4
  require 'fastercsv'
5
5
  require 'contact_csv/contact_csv.rb'
6
- require 'contact_csv/importer.rb'
7
6
  require 'contact_csv/contact.rb'
8
7
  require 'contact_csv/contact_manager.rb'
9
8
  require 'contact_csv/lookup_tables/lookup_table.rb'
@@ -1,11 +1,14 @@
1
1
  # === Contact
2
2
  #
3
- # Object that represents a Contact from an address book
3
+ # Object that represents a Contact from an address book. This class is meant to support the most common attributes.
4
4
  #
5
5
  class ContactCsv::Contact
6
6
 
7
- attr_accessor :extras, :first_name, :middle_name, :last_name, :email, :title
7
+ attr_accessor :first_name, :middle_name, :last_name, :email, :title, :extras
8
8
 
9
+ # Initializes a Contact objest and will take a hash of the attributes with values
10
+ #
11
+ # Contact.new(:first_name => "Willy", :last_name => "Wonka")
9
12
  def initialize(attributes={})
10
13
  @extras = {}
11
14
  @first_name = attributes[:first_name]
@@ -15,88 +18,19 @@ class ContactCsv::Contact
15
18
  @title = attributes[:title]
16
19
  end
17
20
 
21
+ # Returns a hash of all attributes that could not be mapped to a Contact class attribute
18
22
  def extras
19
23
  @extras
20
24
  end
21
25
 
26
+ # Adds an unmappable attribute
22
27
  def add_extra(extra)
23
28
  @extras.merge!(extra)
24
29
  end
25
30
 
26
- #def method_missing(method, *args)
27
- # self.add_extras( { method => args[0] } )
28
- #end
29
-
30
- # attr_accessor :name, :email, :address, :notes, :email2, :email3, :mobile_phone, :pager,
31
- # :company, :job_title, :home_phone, :home_phone2, :home_fax, :home_address,
32
- # :business_phone, :business_phone2, :business_fax, :business_address,
33
- # :other_phone, :other_fax, :other_address
34
- #
35
- # # Initilize takes in options hash and sets the local attributes
36
- # def initialize(attributes={})
37
- # @name = attributes[:name]
38
- # @email = attributes[:email]
39
- # @address = attributes[:address]
40
- # @notes = attributes[:notes]
41
- # @email2 = attributes[:email2]
42
- # @email3 = attributes[:email3]
43
- # @mobile_phone = attributes[:mobile_phone]
44
- # @pager = attributes[:pager]
45
- # @company = attributes[:company]
46
- # @job_title = attributes[:job_title]
47
- # @home_phone = attributes[:home_phone]
48
- # @home_phone2 = attributes[:home_phone2]
49
- # @home_fax = attributes[:home_fax]
50
- # @home_address = attributes[:home_address]
51
- # @business_phone = attributes[:business_phone]
52
- # @business_phone2 = attributes[:business_phone2]
53
- # @business_fax = attributes[:business_fax]
54
- # @business_address = attributes[:business_address]
55
- # @other_phone = attributes[:other_phone]
56
- # @other_fax = attributes[:other_fax]
57
- # @other_address = attributes[:other_address]
58
- # end
59
- #
60
- # # Creates an Array of Contact objects from the FasterCSV Array
61
- # def self.contacts(csv)
62
- # contacts = []
63
- # csv.each do |c|
64
- # contacts << Contact.new(
65
- # :name => c[0],
66
- # :email => c[1],
67
- # :address => c[2],
68
- # :notes => c[3],
69
- # :email2 => c[4],
70
- # :email3 => c[5],
71
- # :mobile_phone => c[6],
72
- # :pager => c[7],
73
- # :company => c[8],
74
- # :job_title => c[9],
75
- # :home_phone => c[10],
76
- # :home_phone2 => c[11],
77
- # :home_fax => c[12],
78
- # :home_address => c[13],
79
- # :business_phone => c[14],
80
- # :business_phone2 => c[15],
81
- # :business_fax => c[16],
82
- # :business_address => c[17],
83
- # :other_phone => c[18],
84
- # :other_fax => c[19],
85
- # :other_address => c[20]
86
- # )
87
- # end
88
- # contacts
89
- # end
90
- #
91
- # def empty?
92
- # @name.nil? && @email.nil? && @address.nil? && @notes.nil? && @email2.nil? &&
93
- # @email3.nil? && @mobile_phone.nil? && @pager.nil? && @company.nil? && @job_title.nil? &&
94
- # @home_phone.nil? && @home_phone2.nil? && @home_fax.nil? && @home_address.nil? && @business_phone.nil? &&
95
- # @business_phone2.nil? && @business_fax.nil? && @business_address.nil? && @other_phone.nil? && @other_fax.nil? && @other_address
96
- # end
97
- #
98
- #
99
- # def method_missing(method, *args)
100
- # end
31
+ # First name and last name
32
+ def full_name
33
+ [@first_name, @last_name].join(' ')
34
+ end
101
35
 
102
36
  end
@@ -1,13 +1,3 @@
1
- # === ContactCsv
2
- #
3
- # ==== Reading in CSV
4
- #
5
- # The two class methods are used to read in a CSV file of contacts exported by email clients such as Outlook or GMail. Both methods return an Array of Contact objects.
6
- #
7
- # ContactCSV.read('/path/to/file.csv')
8
- #
9
- # ContactCSV.parse('csv,data,string')
10
- #
11
1
  module ContactCsv
12
2
  module LookupTables
13
3
  end
@@ -1,52 +1,61 @@
1
+ # === ContctManager
2
+ #
3
+ # The ContactManager handles finding the appropriate lookup table and creating the array of Contact objects
4
+ #
5
+ #
1
6
  class ContactCsv::ContactManager
2
7
  include ContactCsv
8
+ include ContactCsv::LookupTables
3
9
 
4
- attr_accessor :contacts
10
+ attr_accessor :contacts, :lookup_tables
5
11
 
6
- def initialize(csv, lookup_tables=[])
12
+ # Initializes a ContactManager, accepts an Array of LookupTables
13
+ def initialize(lookup_tables=[])
14
+ @lookup_tables = lookup_tables + [OutlookCsv.lookup_table]
15
+ @contacts = []
16
+ end
17
+
18
+ # Reads a CSV file and creates a contact list
19
+ def read(file_path)
20
+ csv = FasterCSV.read(file_path, :headers => true)
21
+ create_contacts(csv)
22
+ end
23
+
24
+ # Reads a CSV string and creates a contact list
25
+ def parse(csv_string)
26
+ csv = FasterCSV.parse(csv_string, :headers => true)
27
+ create_contacts(csv)
28
+ end
29
+
30
+
31
+ private
32
+
33
+ # Creates a contact list from a CSV object
34
+ def create_contacts(csv)
7
35
  @contacts = []
8
-
9
36
  lookup_table = find_lookup_table(csv, lookup_tables)
10
37
  raise LookupTableNotFoundError if lookup_table.nil?
11
-
12
38
  csv.each do |row|
13
39
  c = Contact.new
14
-
15
40
  row.each do |r|
16
41
  col = lookup_table.lookup(r[0])
17
- if !col.nil? && c.respond_to?(col.to_sym)
18
- c.send("#{col.to_s}=", r[1])
19
- else
20
- c.add_extra({ r[0] => r[1] })
21
- end
22
-
42
+ c.send("#{col.to_s}=", r[1]) if !col.nil? && c.respond_to?(col.to_sym)
43
+ c.add_extra({ r[0] => r[1] })
23
44
  end
24
-
25
- contacts << c
45
+ @contacts << c
26
46
  end
27
-
28
- contacts
29
47
  end
30
48
 
31
49
 
32
-
33
- #def contacts
34
- # []
35
- #end
36
-
37
-
38
-
39
- private
40
-
50
+ # Determines the lookup table that matches the file
41
51
  def find_lookup_table(csv, lookup_tables)
42
- tables = lookup_tables + [ContactCsv::LookupTables::OutlookCsv.lookup_table]
52
+ tables = lookup_tables + [OutlookCsv.lookup_table]
43
53
  tables.each do |table|
44
54
  return table if table.headers == csv.headers
45
55
  end
46
56
  return nil
47
57
  end
48
58
 
49
-
50
59
  class LookupTableNotFoundError < StandardError; end
51
60
 
52
61
  end
@@ -1,20 +1,27 @@
1
+ # === LookupTable
2
+ #
3
+ # This class is so users can define their own lookup tables if it isn't supported natively. The headers is an
4
+ # Array of Strings that define the column names for the CSV file. Legend is a hash that maps the column strings
5
+ # to a Contact class attribute. Look at the Contact class for a list of available attributes.
6
+ #
7
+ #
1
8
  class ContactCsv::LookupTables::LookupTable
2
9
 
3
- class InvalidInputFormatError < StandardError; end
10
+ attr_accessor :legend, :headers
4
11
 
5
- attr_accessor :legend, :headers
12
+ # Initializes a LookupTable taking an Array of headers and a Hash that maps the column headers to the Contact object attributes
13
+ def initialize(headers, legend)
14
+ raise InvalidInputFormatError unless headers.is_a?(Array) && legend.is_a?(Hash)
15
+ @headers = headers
16
+ @legend = legend
17
+ end
6
18
 
7
19
 
8
- def initialize(headers, legend)
9
- raise InvalidInputFormatError unless headers.is_a?(Array) && legend.is_a?(Hash)
10
- @headers = headers
11
- @legend = legend
12
- end
13
-
14
-
15
- # Returns the corresponding Contact attribute mapped to the specific Outlook CSV column name
16
- def lookup(column)
17
- @legend[column]
18
- end
20
+ # Returns the corresponding Contact attribute mapped to the specific Outlook CSV column name
21
+ def lookup(column)
22
+ @legend[column]
23
+ end
24
+
25
+ class InvalidInputFormatError < StandardError; end
19
26
 
20
27
  end
@@ -1,114 +1,116 @@
1
1
  # === OutlookCsv
2
2
  #
3
- #
3
+ # Basic class to define the headers and legend for reading Outlook 2003 CSV (Windows) files
4
4
  #
5
5
  #
6
6
  class ContactCsv::LookupTables::OutlookCsv
7
7
  include ContactCsv::LookupTables
8
8
 
9
- def self.legend
10
- {
11
- 'Title' => :title,
12
- 'First Name' => :first_name,
13
- 'Middle Name' => :middle_name,
14
- 'Last Name' => :last_name,
15
- 'E-mail Address' => :email
16
- }
17
- end
9
+ # Returns a Hash of how the columns map to the Contact attributes
10
+ def self.legend
11
+ {
12
+ 'Title' => :title,
13
+ 'First Name' => :first_name,
14
+ 'Middle Name' => :middle_name,
15
+ 'Last Name' => :last_name,
16
+ 'E-mail Address' => :email
17
+ }
18
+ end
18
19
 
19
- # Returns an Array of all the headers for a Outlook CSV file
20
- def self.headers
21
- [ "Title",
22
- "First Name",
23
- "Middle Name",
24
- "Last Name",
25
- "Suffix",
26
- "Company",
27
- "Department",
28
- "Job Title",
29
- "Business Street",
30
- "Business Street 2",
31
- "Business Street 3",
32
- "Business City",
33
- "Business State",
34
- "Business Postal Code",
35
- "Business Country",
36
- "Home Street",
37
- "Home Street 2",
38
- "Home Street 3",
39
- "Home City",
40
- "Home State",
41
- "Home Postal Code",
42
- "Home Country",
43
- "Other Street",
44
- "Other Street 2",
45
- "Other Street 3",
46
- "Other City",
47
- "Other State",
48
- "Other Postal Code",
49
- "Other Country",
50
- "Assistant's Phone",
51
- "Business Fax",
52
- "Business Phone",
53
- "Business Phone 2",
54
- "Callback",
55
- "Car Phone",
56
- "Company Main Phone",
57
- "Home Fax","Home Phone",
58
- "Home Phone 2",
59
- "ISDN",
60
- "Mobile Phone",
61
- "Other Fax",
62
- "Other Phone",
63
- "Pager",
64
- "Primary Phone",
65
- "Radio Phone",
66
- "TTY/TDD Phone",
67
- "Telex","Account",
68
- "Anniversary",
69
- "Assistant's Name",
70
- "Billing Information",
71
- "Birthday",
72
- "Business Address PO Box",
73
- "Categories","Children",
74
- "Directory Server",
75
- "E-mail Address",
76
- "E-mail Type",
77
- "E-mail Display Name",
78
- "E-mail 2 Address",
79
- "E-mail 2 Type",
80
- "E-mail 2 Display Name",
81
- "E-mail 3 Address",
82
- "E-mail 3 Type",
83
- "E-mail 3 Display Name",
84
- "Gender",
85
- "Government ID Number",
86
- "Hobby",
87
- "Home Address PO Box",
88
- "Initials",
89
- "Internet Free Busy",
90
- "Keywords","Language",
91
- "Location",
92
- "Manager's Name",
93
- "Mileage",
94
- "Notes",
95
- "Office Location",
96
- "Organizational ID Number",
97
- "Other Address PO Box",
98
- "Priority","Private",
99
- "Profession",
100
- "Referred By",
101
- "Sensitivity",
102
- "Spouse",
103
- "User 1",
104
- "User 2",
105
- "User 3",
106
- "User 4",
107
- "Web Page"]
108
- end
109
-
110
- def self.lookup_table
111
- LookupTable.new(self.headers, self.legend)
112
- end
20
+ # Returns an Array of all the headers for a Outlook CSV file
21
+ def self.headers
22
+ [ "Title",
23
+ "First Name",
24
+ "Middle Name",
25
+ "Last Name",
26
+ "Suffix",
27
+ "Company",
28
+ "Department",
29
+ "Job Title",
30
+ "Business Street",
31
+ "Business Street 2",
32
+ "Business Street 3",
33
+ "Business City",
34
+ "Business State",
35
+ "Business Postal Code",
36
+ "Business Country",
37
+ "Home Street",
38
+ "Home Street 2",
39
+ "Home Street 3",
40
+ "Home City",
41
+ "Home State",
42
+ "Home Postal Code",
43
+ "Home Country",
44
+ "Other Street",
45
+ "Other Street 2",
46
+ "Other Street 3",
47
+ "Other City",
48
+ "Other State",
49
+ "Other Postal Code",
50
+ "Other Country",
51
+ "Assistant's Phone",
52
+ "Business Fax",
53
+ "Business Phone",
54
+ "Business Phone 2",
55
+ "Callback",
56
+ "Car Phone",
57
+ "Company Main Phone",
58
+ "Home Fax","Home Phone",
59
+ "Home Phone 2",
60
+ "ISDN",
61
+ "Mobile Phone",
62
+ "Other Fax",
63
+ "Other Phone",
64
+ "Pager",
65
+ "Primary Phone",
66
+ "Radio Phone",
67
+ "TTY/TDD Phone",
68
+ "Telex","Account",
69
+ "Anniversary",
70
+ "Assistant's Name",
71
+ "Billing Information",
72
+ "Birthday",
73
+ "Business Address PO Box",
74
+ "Categories","Children",
75
+ "Directory Server",
76
+ "E-mail Address",
77
+ "E-mail Type",
78
+ "E-mail Display Name",
79
+ "E-mail 2 Address",
80
+ "E-mail 2 Type",
81
+ "E-mail 2 Display Name",
82
+ "E-mail 3 Address",
83
+ "E-mail 3 Type",
84
+ "E-mail 3 Display Name",
85
+ "Gender",
86
+ "Government ID Number",
87
+ "Hobby",
88
+ "Home Address PO Box",
89
+ "Initials",
90
+ "Internet Free Busy",
91
+ "Keywords","Language",
92
+ "Location",
93
+ "Manager's Name",
94
+ "Mileage",
95
+ "Notes",
96
+ "Office Location",
97
+ "Organizational ID Number",
98
+ "Other Address PO Box",
99
+ "Priority","Private",
100
+ "Profession",
101
+ "Referred By",
102
+ "Sensitivity",
103
+ "Spouse",
104
+ "User 1",
105
+ "User 2",
106
+ "User 3",
107
+ "User 4",
108
+ "Web Page"]
109
+ end
113
110
 
111
+ # Returns a LookupTable object
112
+ def self.lookup_table
113
+ LookupTable.new(self.headers, self.legend)
114
114
  end
115
+
116
+ end
@@ -1,7 +1,7 @@
1
1
  module ContactCsv #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
- MINOR = 1
4
+ MINOR = 2
5
5
  TINY = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
@@ -25,13 +25,11 @@ class TestContact < Test::Unit::TestCase
25
25
  assert_equal value, @contact.email
26
26
  end
27
27
 
28
-
29
-
30
- # def test_method_missing
31
- # key = "Secretarys Cats Name="
32
- # value = "Mr Jingles"
33
- # @contact.send(key, value)
34
- # assert_equal value, @contact.extras[key]
35
- # end
28
+ def test_full_name
29
+ @contact.first_name = "Britany"
30
+ @contact.last_name = "Spears"
31
+ assert_equal "Britany Spears", @contact.full_name
32
+ end
33
+
36
34
 
37
35
  end
@@ -3,10 +3,24 @@ require File.dirname(__FILE__) + '/test_helper.rb'
3
3
  class TestContactManager < Test::Unit::TestCase
4
4
 
5
5
  def setup
6
-
6
+ @cm = ContactCsv::ContactManager.new
7
+ @cm.read('test/outlook_contacts.csv')
7
8
  end
8
9
 
9
- def test_truth
10
- assert true
10
+ def test_new
11
+ assert_not_nil ContactCsv::ContactManager.new
11
12
  end
13
+
14
+ def test_read_contacts
15
+ assert_equal 5, @cm.contacts.size
16
+ end
17
+
18
+ def test_first_contact
19
+ assert_equal "Michael", @cm.contacts.first.first_name
20
+ end
21
+
22
+ def test_extra_field
23
+ assert_equal "http://www.www.com", @cm.contacts.first.extras['Web Page']
24
+ end
25
+
12
26
  end
@@ -33,7 +33,7 @@
33
33
  <h1>ContactCsv</h1>
34
34
  <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/contact_csv"; return false'>
35
35
  <p>Get Version</p>
36
- <a href="http://rubyforge.org/projects/contact_csv" class="numbers">0.1.0</a>
36
+ <a href="http://rubyforge.org/projects/contact_csv" class="numbers">0.2.0</a>
37
37
  </div>
38
38
  <h1>&#x2192; &#8216;contact_csv&#8217;</h1>
39
39
 
@@ -58,9 +58,9 @@
58
58
 
59
59
  <code>require 'contact_csv'</code>
60
60
  <br />
61
- <code>contacts = ContactCsv.parse("some,csv,string")</code><br />
61
+ <code>contacts = ContactCsv::Importer.parse("some,csv,string")</code><br />
62
62
  or<br />
63
- <code>contacts = ContactCsv.read("/path/to/contacts.csv") #=&gt; Array of Contact objects</code><br /><br />
63
+ <code>contacts = ContactCsv::Importer.read("/path/to/contacts.csv") #=&gt; Array of Contact objects</code><br /><br />
64
64
  <code>contacts.first.first_name #=&gt; "Marshall"</code><br />
65
65
  <code>contacts.first.last_name #=&gt; "Huss"</code><br />
66
66
  <code>contacts.first.email #=&gt; "mwhuss@gmail.com"</code>
@@ -94,9 +94,9 @@ or<br />
94
94
  <h2>Contact</h2>
95
95
 
96
96
 
97
- <p>Comments are welcome. Send an email to <a href="mailto:mwhuss@gmail.com">Marshall Huss</a> email via the <a href="http://rubyforge.org/forum/?group_id=5488">forum</a></p>
97
+ <p>Comments are welcome. Send an email to <a href="mailto:mwhuss@gmail.com">Marshall Huss</a> or post on the <a href="http://rubyforge.org/forum/?group_id=5488">forum</a></p>
98
98
  <p class="coda">
99
- <a href="mailto:mwhuss@gmail.com">Marshall Huss</a>, 6th February 2008<br>
99
+ <a href="mailto:mwhuss@gmail.com">Marshall Huss</a>, 7th February 2008<br>
100
100
  Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
101
101
  </p>
102
102
  </div>
@@ -20,9 +20,9 @@ h3. Demonstration of usage
20
20
 
21
21
  <code>require 'contact_csv'</code>
22
22
  <br />
23
- <code>contacts = ContactCsv.parse("some,csv,string")</code><br />
23
+ <code>contacts = ContactCsv::Importer.parse("some,csv,string")</code><br />
24
24
  or<br />
25
- <code>contacts = ContactCsv.read("/path/to/contacts.csv") #=> Array of Contact objects</code><br /><br />
25
+ <code>contacts = ContactCsv::Importer.read("/path/to/contacts.csv") #=> Array of Contact objects</code><br /><br />
26
26
  <code>contacts.first.first_name #=> "Marshall"</code><br />
27
27
  <code>contacts.first.last_name #=> "Huss"</code><br />
28
28
  <code>contacts.first.email #=> "mwhuss@gmail.com"</code>
@@ -50,5 +50,5 @@ This code is free to use under the terms of the "MIT license":http://www.opensou
50
50
 
51
51
  h2. Contact
52
52
 
53
- Comments are welcome. Send an email to "Marshall Huss":mailto:mwhuss@gmail.com email via the "forum":http://rubyforge.org/forum/?group_id=5488
53
+ Comments are welcome. Send an email to "Marshall Huss":mailto:mwhuss@gmail.com or post on the "forum":http://rubyforge.org/forum/?group_id=5488
54
54
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: contact_csv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marshall Huss
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-02-06 00:00:00 -05:00
12
+ date: 2008-02-07 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -46,7 +46,6 @@ files:
46
46
  - lib/contact_csv/contact.rb
47
47
  - lib/contact_csv/contact_csv.rb
48
48
  - lib/contact_csv/contact_manager.rb
49
- - lib/contact_csv/importer.rb
50
49
  - lib/contact_csv/lookup_tables/lookup_table.rb
51
50
  - lib/contact_csv/lookup_tables/outlook_csv.rb
52
51
  - lib/contact_csv/version.rb
@@ -60,10 +59,8 @@ files:
60
59
  - test/outlook_contacts.csv
61
60
  - test/outlook_contacts_dos.csv
62
61
  - test/test_contact.rb
63
- - test/test_contact_csv.rb
64
62
  - test/test_contact_manager.rb
65
63
  - test/test_helper.rb
66
- - test/test_importer.rb
67
64
  - test/test_lookup_table.rb
68
65
  - website/index.html
69
66
  - website/index.txt
@@ -99,8 +96,6 @@ specification_version: 2
99
96
  summary: Simple gem for reading in contact csv files that you can export from email clients like Outlook or GMail
100
97
  test_files:
101
98
  - test/test_contact.rb
102
- - test/test_contact_csv.rb
103
99
  - test/test_contact_manager.rb
104
100
  - test/test_helper.rb
105
- - test/test_importer.rb
106
101
  - test/test_lookup_table.rb
@@ -1,18 +0,0 @@
1
- class ContactCsv::Importer
2
- include ContactCsv
3
-
4
- # Creates an Array of Contact objects from a CSV File
5
- def self.read(file_path, lookup_tables=[])
6
- csv = FasterCSV.read(file_path, :headers => true)
7
- contact_manager = ContactManager.new(csv, lookup_tables)
8
- contact_manager.contacts
9
- end
10
-
11
- # Creates an Array of Contact objects from a CSV String
12
- def self.parse(csv_string, lookup_tables=[])
13
- csv = FasterCSV.parse(csv_string, :headers => true)
14
- contact_manager = ContactManager.new(csv, lookup_tables)
15
- contact_manager.contacts
16
- end
17
-
18
- end
@@ -1,12 +0,0 @@
1
- require File.dirname(__FILE__) + '/test_helper.rb'
2
-
3
- class TestContactCsv < Test::Unit::TestCase
4
-
5
- def setup
6
-
7
- end
8
-
9
- def test_truth
10
- assert true
11
- end
12
- end
@@ -1,18 +0,0 @@
1
- require File.dirname(__FILE__) + '/test_helper.rb'
2
-
3
- class TestImporter < Test::Unit::TestCase
4
-
5
-
6
- def test_read
7
- contacts = ContactCsv::Importer.read('test/outlook_contacts.csv')
8
- assert_equal 5, contacts.size
9
- end
10
-
11
- def test_first_contact
12
- contacts = ContactCsv::Importer.read('test/outlook_contacts.csv')
13
- c = contacts.first
14
- assert_equal "Michael", c.first_name
15
- end
16
-
17
-
18
- end