fruit_to_lime 2.5.5 → 2.5.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. data/lib/fruit_to_lime.rb +17 -17
  2. data/lib/fruit_to_lime/csv_helper.rb +47 -47
  3. data/lib/fruit_to_lime/email_helper.rb +10 -10
  4. data/lib/fruit_to_lime/errors.rb +16 -16
  5. data/lib/fruit_to_lime/excel_helper.rb +10 -10
  6. data/lib/fruit_to_lime/global_phone.json +6571 -6571
  7. data/lib/fruit_to_lime/model/address.rb +60 -60
  8. data/lib/fruit_to_lime/model/class_settings.rb +50 -50
  9. data/lib/fruit_to_lime/model/coworker.rb +76 -76
  10. data/lib/fruit_to_lime/model/coworker_reference.rb +33 -33
  11. data/lib/fruit_to_lime/model/customfield.rb +87 -87
  12. data/lib/fruit_to_lime/model/deal.rb +141 -141
  13. data/lib/fruit_to_lime/model/deal_status.rb +12 -12
  14. data/lib/fruit_to_lime/model/note.rb +80 -79
  15. data/lib/fruit_to_lime/model/organization.rb +203 -203
  16. data/lib/fruit_to_lime/model/person.rb +151 -151
  17. data/lib/fruit_to_lime/model/referencetosource.rb +45 -45
  18. data/lib/fruit_to_lime/model/relation.rb +23 -23
  19. data/lib/fruit_to_lime/model/rootmodel.rb +342 -338
  20. data/lib/fruit_to_lime/model/settings.rb +60 -60
  21. data/lib/fruit_to_lime/model/tag.rb +35 -35
  22. data/lib/fruit_to_lime/model_helpers.rb +54 -54
  23. data/lib/fruit_to_lime/phone_helper.rb +74 -74
  24. data/lib/fruit_to_lime/roo_helper.rb +72 -72
  25. data/lib/fruit_to_lime/serialize_helper.rb +186 -186
  26. data/lib/fruit_to_lime/templating.rb +52 -52
  27. data/spec/address_spec.rb +48 -48
  28. data/spec/class_settings_spec.rb +37 -37
  29. data/spec/coworker_spec.rb +94 -94
  30. data/spec/custom_field_spec.rb +22 -22
  31. data/spec/deal_spec.rb +101 -101
  32. data/spec/helpers/csv_helper_spec.rb +29 -29
  33. data/spec/helpers/email_helper_spec.rb +32 -32
  34. data/spec/helpers/phone_helper_spec.rb +97 -97
  35. data/spec/helpers/serialize_helper_spec.rb +249 -249
  36. data/spec/helpers/xsd_validate_spec.rb +58 -58
  37. data/spec/note_spec.rb +98 -98
  38. data/spec/organization_spec.rb +103 -103
  39. data/spec/person_spec.rb +134 -134
  40. data/spec/rootmodel_spec.rb +306 -277
  41. data/spec/templating_spec.rb +11 -11
  42. data/templates/csv/lib/tomodel.rb +230 -230
  43. data/templates/csv/spec/exporter_spec.rb +17 -17
  44. data/templates/csv/spec/sample_data/coworkers.csv +2 -2
  45. data/templates/csv/spec/sample_data/deals.csv +2 -2
  46. data/templates/csv/spec/sample_data/organizations.csv +2 -2
  47. data/templates/csv/spec/sample_data/persons.csv +2 -2
  48. data/templates/easy/Gemfile +5 -5
  49. data/templates/easy/Rakefile.rb +7 -7
  50. data/templates/easy/convert.rb +2 -2
  51. data/templates/easy/spec/exporter_spec.rb +10 -10
  52. data/templates/easy/spec/spec_helper.rb +24 -24
  53. data/templates/excel/lib/tomodel.rb +207 -207
  54. data/templates/sqlserver/lib/tomodel.rb +79 -79
  55. metadata +3 -3
@@ -1,61 +1,61 @@
1
- require 'iso_country_codes'
2
- module FruitToLime
3
- class Address
4
- attr_accessor :street, :zip_code, :city, :country_code, :location
5
- def serialize_variables
6
- [ :street, :zip_code, :city, :country_code, :location].map {|p| {:id=>p,:type=>:string} }
7
- end
8
- include SerializeHelper
9
- def initialize()
10
- end
11
-
12
- # What fields/rows on the class is supposed to be used by the Gem to generate the xml
13
- # This method uses {#serialize_variables}. It also adds {#country_name} to be serialized
14
- def get_import_rows
15
- (serialize_variables+[{:id=>:country_name, :type=>:string}]).map do |p|
16
- map_to_row p
17
- end
18
- end
19
- # Used as a convenience in order to get country code from internally used {#country_code}
20
- def country_name
21
- if @country_code
22
- IsoCountryCodes.find(@country_code).name
23
- else
24
- nil
25
- end
26
- end
27
-
28
- # Used as a convenience in order to map country name to the internal {#country_code}
29
- def country_name=(name)
30
- @country_code = case name
31
- when nil
32
- nil
33
- when 'Sverige'
34
- 'SE'
35
- else
36
- IsoCountryCodes.search_by_name(name).first.alpha2
37
- end
38
- end
39
- # parses a line like "226 48 LUND" into its corresponding
40
- # zipcode and city properties on the address
41
- def parse_zip_and_address_se(line)
42
- Address.parse_line_to_zip_and_address_se(line, self)
43
- end
44
-
45
- private
46
- def self.parse_line_to_zip_and_address_se(line, address)
47
- matched_zipcode = /^\d{3}\s?\d{2}/.match(line)
48
- if matched_zipcode && matched_zipcode.length == 1
49
- address.zip_code = matched_zipcode[0].strip()
50
- matched_city = /\D*$/.match(line)
51
- if matched_city && matched_city.length == 1
52
- address.city = matched_city[0].strip()
53
- return address
54
- end
55
- end
56
- return nil
57
- end
58
-
59
-
60
- end
1
+ require 'iso_country_codes'
2
+ module FruitToLime
3
+ class Address
4
+ attr_accessor :street, :zip_code, :city, :country_code, :location
5
+ def serialize_variables
6
+ [ :street, :zip_code, :city, :country_code, :location].map {|p| {:id=>p,:type=>:string} }
7
+ end
8
+ include SerializeHelper
9
+ def initialize()
10
+ end
11
+
12
+ # What fields/rows on the class is supposed to be used by the Gem to generate the xml
13
+ # This method uses {#serialize_variables}. It also adds {#country_name} to be serialized
14
+ def get_import_rows
15
+ (serialize_variables+[{:id=>:country_name, :type=>:string}]).map do |p|
16
+ map_to_row p
17
+ end
18
+ end
19
+ # Used as a convenience in order to get country code from internally used {#country_code}
20
+ def country_name
21
+ if @country_code
22
+ IsoCountryCodes.find(@country_code).name
23
+ else
24
+ nil
25
+ end
26
+ end
27
+
28
+ # Used as a convenience in order to map country name to the internal {#country_code}
29
+ def country_name=(name)
30
+ @country_code = case name
31
+ when nil
32
+ nil
33
+ when 'Sverige'
34
+ 'SE'
35
+ else
36
+ IsoCountryCodes.search_by_name(name).first.alpha2
37
+ end
38
+ end
39
+ # parses a line like "226 48 LUND" into its corresponding
40
+ # zipcode and city properties on the address
41
+ def parse_zip_and_address_se(line)
42
+ Address.parse_line_to_zip_and_address_se(line, self)
43
+ end
44
+
45
+ private
46
+ def self.parse_line_to_zip_and_address_se(line, address)
47
+ matched_zipcode = /^\d{3}\s?\d{2}/.match(line)
48
+ if matched_zipcode && matched_zipcode.length == 1
49
+ address.zip_code = matched_zipcode[0].strip()
50
+ matched_city = /\D*$/.match(line)
51
+ if matched_city && matched_city.length == 1
52
+ address.city = matched_city[0].strip()
53
+ return address
54
+ end
55
+ end
56
+ return nil
57
+ end
58
+
59
+
60
+ end
61
61
  end
@@ -1,50 +1,50 @@
1
- # encoding: utf-8
2
- module FruitToLime
3
- class ClassSettings
4
- include SerializeHelper
5
- attr_reader :custom_fields
6
-
7
- def initialize(opt = nil)
8
- if opt != nil
9
- serialize_variables.each do |myattr|
10
- val = opt[myattr[:id]]
11
- instance_variable_set("@" + myattr[:id].to_s, val) if val != nil
12
- end
13
- end
14
- end
15
-
16
- def serialize_variables
17
- [{:id => :custom_fields, :type => :custom_fields} ]
18
- end
19
-
20
- def serialize_name
21
- "ClassSettings"
22
- end
23
-
24
- # Set custom field. If there is already an existing custom field, then it is overwritten.
25
- def set_custom_field(obj)
26
- @custom_fields = [] if @custom_fields == nil
27
-
28
- if obj.is_a?(CustomField)
29
- field = obj
30
- else
31
- field = CustomField.new(obj)
32
- end
33
-
34
- if field.integration_id == "" && field.id == ""
35
- raise InvalidCustomFieldError, "Custom field must have either id or integration_id"
36
- end
37
-
38
- index = @custom_fields.find_index do |custom_field|
39
- custom_field.same_as?(field)
40
- end
41
- if index
42
- @custom_fields.delete_at index
43
- end
44
-
45
- @custom_fields.push field
46
-
47
- return field
48
- end
49
- end
50
- end
1
+ # encoding: utf-8
2
+ module FruitToLime
3
+ class ClassSettings
4
+ include SerializeHelper
5
+ attr_reader :custom_fields
6
+
7
+ def initialize(opt = nil)
8
+ if opt != nil
9
+ serialize_variables.each do |myattr|
10
+ val = opt[myattr[:id]]
11
+ instance_variable_set("@" + myattr[:id].to_s, val) if val != nil
12
+ end
13
+ end
14
+ end
15
+
16
+ def serialize_variables
17
+ [{:id => :custom_fields, :type => :custom_fields} ]
18
+ end
19
+
20
+ def serialize_name
21
+ "ClassSettings"
22
+ end
23
+
24
+ # Set custom field. If there is already an existing custom field, then it is overwritten.
25
+ def set_custom_field(obj)
26
+ @custom_fields = [] if @custom_fields == nil
27
+
28
+ if obj.is_a?(CustomField)
29
+ field = obj
30
+ else
31
+ field = CustomField.new(obj)
32
+ end
33
+
34
+ if field.integration_id == "" && field.id == ""
35
+ raise InvalidCustomFieldError, "Custom field must have either id or integration_id"
36
+ end
37
+
38
+ index = @custom_fields.find_index do |custom_field|
39
+ custom_field.same_as?(field)
40
+ end
41
+ if index
42
+ @custom_fields.delete_at index
43
+ end
44
+
45
+ @custom_fields.push field
46
+
47
+ return field
48
+ end
49
+ end
50
+ end
@@ -1,76 +1,76 @@
1
- # encoding: utf-8
2
- module FruitToLime
3
- class Coworker
4
- include SerializeHelper
5
- attr_accessor :id, :integration_id, :email, :first_name, :last_name, :direct_phone_number,
6
- :mobile_phone_number, :home_phone_number
7
-
8
- def initialize(opt = nil)
9
- if opt != nil
10
- serialize_variables.each do |myattr|
11
- val = opt[myattr[:id]]
12
- instance_variable_set("@" + myattr[:id].to_s, val) if val != nil
13
- end
14
- end
15
- end
16
-
17
- def serialize_variables
18
- [
19
- :id, :integration_id, :email, :first_name, :last_name,
20
- :direct_phone_number, :mobile_phone_number, :home_phone_number
21
- ].map {|p| { :id => p, :type => :string } }
22
- end
23
-
24
- def to_reference
25
- reference = CoworkerReference.new
26
- reference.id = @id
27
- reference.integration_id = @integration_id
28
- reference.heading = "#{@first_name} #{@last_name}".strip
29
-
30
- return reference
31
- end
32
-
33
- def serialize_name
34
- "Coworker"
35
- end
36
-
37
- def ==(that)
38
- if that.nil?
39
- return false
40
- end
41
-
42
- if that.is_a? Coworker
43
- return @integration_id == that.integration_id
44
- end
45
-
46
- return false
47
- end
48
-
49
- def parse_name_to_firstname_lastname_se(name, when_missing = '')
50
- if name.nil? or name.empty?
51
- @first_name = when_missing
52
- return
53
- end
54
-
55
- splitted = name.split(' ')
56
- @first_name = splitted[0]
57
- if splitted.length > 1
58
- @last_name = splitted.drop(1).join(' ')
59
- end
60
- end
61
-
62
- def to_email_chars(s)
63
- s.tr " åäöèé", "-aaoee"
64
- end
65
-
66
- def guess_email(domain)
67
- return '' if @last_name.nil? || @last_name.empty?
68
- return '' if @first_name.nil? || @first_name.empty?
69
-
70
- firstname = to_email_chars @first_name.downcase
71
- lastname = to_email_chars @last_name.downcase
72
- return "#{firstname}.#{lastname}@#{domain}"
73
- end
74
-
75
- end
76
- end
1
+ # encoding: utf-8
2
+ module FruitToLime
3
+ class Coworker
4
+ include SerializeHelper
5
+ attr_accessor :id, :integration_id, :email, :first_name, :last_name, :direct_phone_number,
6
+ :mobile_phone_number, :home_phone_number
7
+
8
+ def initialize(opt = nil)
9
+ if opt != nil
10
+ serialize_variables.each do |myattr|
11
+ val = opt[myattr[:id]]
12
+ instance_variable_set("@" + myattr[:id].to_s, val) if val != nil
13
+ end
14
+ end
15
+ end
16
+
17
+ def serialize_variables
18
+ [
19
+ :id, :integration_id, :email, :first_name, :last_name,
20
+ :direct_phone_number, :mobile_phone_number, :home_phone_number
21
+ ].map {|p| { :id => p, :type => :string } }
22
+ end
23
+
24
+ def to_reference
25
+ reference = CoworkerReference.new
26
+ reference.id = @id
27
+ reference.integration_id = @integration_id
28
+ reference.heading = "#{@first_name} #{@last_name}".strip
29
+
30
+ return reference
31
+ end
32
+
33
+ def serialize_name
34
+ "Coworker"
35
+ end
36
+
37
+ def ==(that)
38
+ if that.nil?
39
+ return false
40
+ end
41
+
42
+ if that.is_a? Coworker
43
+ return @integration_id == that.integration_id
44
+ end
45
+
46
+ return false
47
+ end
48
+
49
+ def parse_name_to_firstname_lastname_se(name, when_missing = '')
50
+ if name.nil? or name.empty?
51
+ @first_name = when_missing
52
+ return
53
+ end
54
+
55
+ splitted = name.split(' ')
56
+ @first_name = splitted[0]
57
+ if splitted.length > 1
58
+ @last_name = splitted.drop(1).join(' ')
59
+ end
60
+ end
61
+
62
+ def to_email_chars(s)
63
+ s.tr " åäöèé", "-aaoee"
64
+ end
65
+
66
+ def guess_email(domain)
67
+ return '' if @last_name.nil? || @last_name.empty?
68
+ return '' if @first_name.nil? || @first_name.empty?
69
+
70
+ firstname = to_email_chars @first_name.downcase
71
+ lastname = to_email_chars @last_name.downcase
72
+ return "#{firstname}.#{lastname}@#{domain}"
73
+ end
74
+
75
+ end
76
+ end
@@ -1,33 +1,33 @@
1
- module FruitToLime
2
- class CoworkerReference
3
- include SerializeHelper
4
- attr_accessor :id, :heading, :integration_id
5
-
6
- def initialize(opt = nil)
7
- if opt != nil
8
- serialize_variables.each do |myattr|
9
- val = opt[myattr[:id]]
10
- instance_variable_set("@" + myattr[:id].to_s, val) if val != nil
11
- end
12
- end
13
- end
14
-
15
- def serialize_variables
16
- [:id, :integration_id, :heading].map {|p| {:id => p, :type => :string} }
17
- end
18
-
19
- def serialize_name
20
- "CoworkerReference"
21
- end
22
-
23
- def self.from_coworker(coworker)
24
- if coworker.nil?
25
- return nil
26
- elsif coworker.is_a?(Coworker)
27
- return coworker.to_reference
28
- elsif coworker.is_a?(CoworkerReference)
29
- return coworker
30
- end
31
- end
32
- end
33
- end
1
+ module FruitToLime
2
+ class CoworkerReference
3
+ include SerializeHelper
4
+ attr_accessor :id, :heading, :integration_id
5
+
6
+ def initialize(opt = nil)
7
+ if opt != nil
8
+ serialize_variables.each do |myattr|
9
+ val = opt[myattr[:id]]
10
+ instance_variable_set("@" + myattr[:id].to_s, val) if val != nil
11
+ end
12
+ end
13
+ end
14
+
15
+ def serialize_variables
16
+ [:id, :integration_id, :heading].map {|p| {:id => p, :type => :string} }
17
+ end
18
+
19
+ def serialize_name
20
+ "CoworkerReference"
21
+ end
22
+
23
+ def self.from_coworker(coworker)
24
+ if coworker.nil?
25
+ return nil
26
+ elsif coworker.is_a?(Coworker)
27
+ return coworker.to_reference
28
+ elsif coworker.is_a?(CoworkerReference)
29
+ return coworker
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,87 +1,87 @@
1
- module FruitToLime
2
- class CustomFieldReference
3
- include SerializeHelper, ModelWithIntegrationIdSameAs
4
-
5
- attr_accessor :id, :integration_id
6
-
7
- def initialize(opt=nil)
8
- if opt != nil
9
- serialize_variables.each do |myattr|
10
- val = opt[myattr[:id]]
11
- instance_variable_set("@" + myattr[:id].to_s, val) if val != nil
12
- end
13
- end
14
- end
15
-
16
- def serialize_variables
17
- [:id, :integration_id].map {|p| { :id => p, :type => :string } }
18
- end
19
-
20
- def get_import_rows
21
- serialize_variables.map do |p|
22
- map_to_row p
23
- end
24
- end
25
-
26
- def serialize_name
27
- "CustomFieldReference"
28
- end
29
- end
30
-
31
- class CustomField
32
- include SerializeHelper, ModelWithIntegrationIdSameAs
33
- attr_accessor :id, :integration_id, :title, :type
34
-
35
- def initialize(opt=nil)
36
- if opt != nil
37
- serialize_variables.each do |myattr|
38
- val = opt[myattr[:id]]
39
- instance_variable_set("@" + myattr[:id].to_s, val) if val != nil
40
- end
41
- end
42
- end
43
-
44
- def serialize_variables
45
- [:id, :integration_id, :title, :type].map {|p| { :id => p, :type => :string } }
46
- end
47
-
48
- def get_import_rows
49
- serialize_variables.map do |p|
50
- map_to_row p
51
- end
52
- end
53
-
54
- def serialize_name
55
- "CustomField"
56
- end
57
- end
58
-
59
- class CustomValue
60
- include SerializeHelper
61
- attr_accessor :field, :value
62
-
63
- def initialize(opt=nil)
64
- if opt != nil
65
- serialize_variables.each do |myattr|
66
- val = opt[myattr[:id]]
67
- instance_variable_set("@" + myattr[:id].to_s, val) if val != nil
68
- end
69
- end
70
- end
71
-
72
- def serialize_variables
73
- [ { :id =>:field, :type => :custom_field_reference },
74
- { :id =>:value, :type => :string }]
75
- end
76
-
77
- def get_import_rows
78
- serialize_variables.map do |p|
79
- map_to_row p
80
- end
81
- end
82
-
83
- def serialize_name
84
- "CustomValue"
85
- end
86
- end
87
- end
1
+ module FruitToLime
2
+ class CustomFieldReference
3
+ include SerializeHelper, ModelWithIntegrationIdSameAs
4
+
5
+ attr_accessor :id, :integration_id
6
+
7
+ def initialize(opt=nil)
8
+ if opt != nil
9
+ serialize_variables.each do |myattr|
10
+ val = opt[myattr[:id]]
11
+ instance_variable_set("@" + myattr[:id].to_s, val) if val != nil
12
+ end
13
+ end
14
+ end
15
+
16
+ def serialize_variables
17
+ [:id, :integration_id].map {|p| { :id => p, :type => :string } }
18
+ end
19
+
20
+ def get_import_rows
21
+ serialize_variables.map do |p|
22
+ map_to_row p
23
+ end
24
+ end
25
+
26
+ def serialize_name
27
+ "CustomFieldReference"
28
+ end
29
+ end
30
+
31
+ class CustomField
32
+ include SerializeHelper, ModelWithIntegrationIdSameAs
33
+ attr_accessor :id, :integration_id, :title, :type
34
+
35
+ def initialize(opt=nil)
36
+ if opt != nil
37
+ serialize_variables.each do |myattr|
38
+ val = opt[myattr[:id]]
39
+ instance_variable_set("@" + myattr[:id].to_s, val) if val != nil
40
+ end
41
+ end
42
+ end
43
+
44
+ def serialize_variables
45
+ [:id, :integration_id, :title, :type].map {|p| { :id => p, :type => :string } }
46
+ end
47
+
48
+ def get_import_rows
49
+ serialize_variables.map do |p|
50
+ map_to_row p
51
+ end
52
+ end
53
+
54
+ def serialize_name
55
+ "CustomField"
56
+ end
57
+ end
58
+
59
+ class CustomValue
60
+ include SerializeHelper
61
+ attr_accessor :field, :value
62
+
63
+ def initialize(opt=nil)
64
+ if opt != nil
65
+ serialize_variables.each do |myattr|
66
+ val = opt[myattr[:id]]
67
+ instance_variable_set("@" + myattr[:id].to_s, val) if val != nil
68
+ end
69
+ end
70
+ end
71
+
72
+ def serialize_variables
73
+ [ { :id =>:field, :type => :custom_field_reference },
74
+ { :id =>:value, :type => :string }]
75
+ end
76
+
77
+ def get_import_rows
78
+ serialize_variables.map do |p|
79
+ map_to_row p
80
+ end
81
+ end
82
+
83
+ def serialize_name
84
+ "CustomValue"
85
+ end
86
+ end
87
+ end