outlook_importer 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/outlook_importer.gemspec +1 -1
- data/outlook_importer.rb +29 -3
- data/test/outlook_importer_test.rb +13 -0
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/outlook_importer.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{outlook_importer}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Frank Pr\303\266\303\237dorf, Thilo Utke"]
|
data/outlook_importer.rb
CHANGED
@@ -2,14 +2,17 @@ require 'rubygems'
|
|
2
2
|
require 'fastercsv'
|
3
3
|
|
4
4
|
class OutlookImporter
|
5
|
-
def initialize(mapping)
|
6
|
-
|
7
|
-
|
5
|
+
def initialize(mapping = nil)
|
6
|
+
if mapping
|
7
|
+
@mapping = mapping.invert
|
8
|
+
raise ArgumentError unless valid_arguments?
|
9
|
+
end
|
8
10
|
end
|
9
11
|
|
10
12
|
def read(file_path)
|
11
13
|
separator = File.new(file_path).gets.match(/([,;])[^,;]+\n/)[1]
|
12
14
|
@csv = FasterCSV.read(file_path, :headers => true, :col_sep => separator)
|
15
|
+
@mapping = find_lookup_table.invert unless @mapping
|
13
16
|
assign_header_columns(@csv.headers)
|
14
17
|
end
|
15
18
|
|
@@ -68,4 +71,27 @@ class OutlookImporter
|
|
68
71
|
def joined_arguments?
|
69
72
|
@joined_arguments ||= @header_column_indices.include?(:name)
|
70
73
|
end
|
74
|
+
|
75
|
+
def find_lookup_table
|
76
|
+
lookup_tables.each do |key, mapping|
|
77
|
+
return mapping if mapping.values - @csv.headers == []
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def lookup_tables
|
82
|
+
{
|
83
|
+
:livemail =>
|
84
|
+
{
|
85
|
+
:name => 'Name',
|
86
|
+
:email => 'E-Mail-Adresse'
|
87
|
+
},
|
88
|
+
:outlook =>
|
89
|
+
{
|
90
|
+
:firstname => 'Vorname',
|
91
|
+
:lastname => 'Nachname',
|
92
|
+
:email => 'E-Mail-Adresse'
|
93
|
+
}
|
94
|
+
}
|
95
|
+
end
|
96
|
+
|
71
97
|
end
|
@@ -22,7 +22,20 @@ class OutlookImporterTest < Test::Unit::TestCase
|
|
22
22
|
importer.read('livemail_de.csv')
|
23
23
|
|
24
24
|
assert_equal importer.contacts.first, ["Robin Example", "robin@example.de"]
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_read_outlook_contacts_without_providing_a_lookup_table
|
28
|
+
importer = OutlookImporter.new
|
29
|
+
importer.read('outlook_2007_de.csv')
|
30
|
+
|
31
|
+
assert_equal importer.contacts.first, ["Robin Example", "robin@example.de"]
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_read_livemail_contacts_without_providing_a_lookup_table
|
35
|
+
importer = OutlookImporter.new
|
36
|
+
importer.read('livemail_de.csv')
|
25
37
|
|
38
|
+
assert_equal importer.contacts.first, ["Robin Example", "robin@example.de"]
|
26
39
|
end
|
27
40
|
|
28
41
|
def test_initilize_raise_invalid_argument_error_if_lookup_not_satisfied
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: outlook_importer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 2
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- "Frank Pr\xC3\xB6\xC3\x9Fdorf, Thilo Utke"
|