crm_formatter 1.0.2.pre.rc.1 → 1.0.3.pre.rc.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 55c0492c70468ec89ff37f86a327588798fe2571fae14ab79d7a1dce6ce5e931
4
- data.tar.gz: 55afae0d73b89304f0d3fbdec2a91e7d4f77c9d5d8f40a06195d9754095a1ee3
3
+ metadata.gz: 84e611755e48ace0e3749f41cd7a593d01de04cbaeac00223e0b1f6b7a3479d8
4
+ data.tar.gz: 7168462838bcd31e7390e6c4563236916a9b68210218934fb5d554fbdbbcf001
5
5
  SHA512:
6
- metadata.gz: bc389bc3248c9b32b464378ed71258325a2c27b43b933101dec41cf1aa8b450b3f7ce3d5fe47405c77f41bff32ade3a107668ac528500d28a797bc0fba2ae481
7
- data.tar.gz: 8c0046fc1da44ccdc9812242c023e232b55e0ad11ca0da804c044f358e5eb65afc0d25ab95161f1a7347f41efb9fa3759b6cfe12bc04e16d9145df494bf8da19
6
+ metadata.gz: 2dc917206f92120f86a88e0842c95e6b5e276e8f19ff964f3f0722234719745c2cab67e2f5e47f11c75e120e75fdd298897d5f15808969f412a07f798f545a6c
7
+ data.tar.gz: '09dc46e716020aaa772c50febc0908823920721aacb252b5a5ef779f681293ecb54812ae2bdb9910e01b8d66528026395a7272bca067d6de9ab676309eda0093'
@@ -17,17 +17,11 @@ Gem::Specification.new do |spec|
17
17
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
18
  f.match(%r{^(test|spec|features)/})
19
19
  end
20
+
20
21
  spec.bindir = "exe"
21
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
23
  spec.require_paths = ["lib"]
23
24
 
24
- # spec.add_development_dependency "activerecord", "~> 4.0"
25
- # spec.add_development_dependency "sqlite3", "~> 1.3", ">= 1.3.13"
26
- # spec.add_development_dependency "railties", ">= 4.2.0", "< 5.1"
27
- # spec.add_development_dependency "bundler", "~> 1.13"
28
- # spec.add_development_dependency "rake", "~> 10.0"
29
- # spec.add_development_dependency "rspec", "~> 3.0"
30
- # spec.add_development_dependency "pry", "~> 0.10.4"
31
-
32
- # spec.add_runtime_dependency "logging"
25
+ spec.add_development_dependency "pry", "~> 0.10.4"
26
+
33
27
  end
@@ -1,8 +1,9 @@
1
- class CRMFormatter
2
- def self.hi(language)
3
- translator = Translator.new(language)
4
- translator.hi
5
- end
6
- end
1
+ require 'crm_formatter/address'
2
+ require 'crm_formatter/web'
3
+ require 'crm_formatter/phone'
4
+ require 'crm_formatter/helpers'
5
+ require 'crm_formatter/version'
6
+
7
+ module CRMFormatter
7
8
 
8
- require 'crm_formatter/translator'
9
+ end
@@ -0,0 +1,174 @@
1
+ module CRMFormatter
2
+ class Address
3
+
4
+ def format_full_address(adr = {})
5
+ formatted = {
6
+ street: format_street(adr[:street]),
7
+ city: format_city(adr[:city]),
8
+ state: format_state(adr[:state]),
9
+ zip: format_zip(adr[:zip])
10
+ }
11
+
12
+ formatted[:full_address] = get_full_address(formatted)
13
+ formatted[:changed] = compare_versions(adr, formatted)
14
+ formatted
15
+ end
16
+
17
+
18
+ ####### COMPARE ORIGINAL AND FORMATTED ADR ######
19
+ def compare_versions(original, formatted)
20
+ original = get_full_address(original)
21
+ formatted = formatted[:full_address]
22
+ original != formatted
23
+ end
24
+
25
+
26
+ ######### FORMAT FULL ADDRESS ##########
27
+
28
+ def get_full_address(hsh)
29
+ full_address = [hsh[:street], hsh[:city], hsh[:state], hsh[:zip]].compact.join(', ')
30
+ end
31
+
32
+ ######### FORMAT STREET ##########
33
+
34
+ # CALL: Formatter.new.format_street(street)
35
+ def format_street(street)
36
+ street = street&.gsub(/\s/, ' ')&.strip
37
+ if street.present?
38
+
39
+ if street.present?
40
+ # street = Formatter.new.letter_case_check(street)
41
+ street = CRMFormatter::Helpers.letter_case_check(street)
42
+ street = " #{street} " # Adds white space, to match below, then strip.
43
+ street&.gsub!(".", " ")
44
+ street&.gsub!(",", " ")
45
+
46
+ street&.gsub!(" North ", " N ")
47
+ street&.gsub!(" South ", " S ")
48
+ street&.gsub!(" East ", " E ")
49
+ street&.gsub!(" West ", " W ")
50
+ street&.gsub!(" Ne ", " NE ")
51
+ street&.gsub!(" Nw ", " NW ")
52
+ street&.gsub!(" Se ", " SE ")
53
+ street&.gsub!(" Sw ", " SW ")
54
+
55
+ street&.gsub!("Avenue", "Ave")
56
+ street&.gsub!("Boulevard", "Blvd")
57
+ street&.gsub!("Drive", "Dr")
58
+ street&.gsub!("Expressway", "Expy")
59
+ street&.gsub!("Freeway", "Fwy")
60
+ street&.gsub!("Highway", "Hwy")
61
+ street&.gsub!("Lane", "Ln")
62
+ street&.gsub!("Parkway", "Pkwy")
63
+ street&.gsub!("Road", "Rd")
64
+ street&.gsub!("Route", "Rte")
65
+ street&.gsub!("Street", "St")
66
+ street&.gsub!("Terrace", "Ter")
67
+ street&.gsub!("Trail", "Trl")
68
+ street&.gsub!("Turnpike", "Tpke")
69
+ street&.gsub!("|", " ")
70
+ street&.gsub!("•", " ")
71
+ street&.gsub!("Welcome to", " ")
72
+ street&.gsub!("var address = \"", " ")
73
+
74
+ street&.strip!
75
+ street&.squeeze!(" ")
76
+ end
77
+ end
78
+ return street
79
+ end
80
+
81
+ ########## FORMAT CITY ###########
82
+
83
+ def format_city(city)
84
+ city = city&.gsub(/\s/, ' ')&.strip
85
+ city = nil if city&.scan(/[0-9]/)&.any?
86
+ city = nil if city&.downcase&.include?('category')
87
+ city = nil if city&.downcase&.include?('model')
88
+ city = nil if city&.downcase&.include?('make')
89
+ city = nil if city&.downcase&.include?('inventory')
90
+ city = nil if city&.downcase&.include?('tracker')
91
+ city = nil if city&.downcase&.include?('push')
92
+ city = nil if city&.downcase&.include?("(")
93
+ city = nil if city&.downcase&.include?(")")
94
+ city = nil if city&.downcase&.include?("[")
95
+ city = nil if city&.downcase&.include?("]")
96
+ city&.gsub!("|", " ")
97
+ city&.gsub!("•", " ")
98
+
99
+ if city.present?
100
+ street_types = %w(avenue boulevard drive expressway freeway highway lane parkway road route street terrace trail turnpike)
101
+ invalid_city = street_types.find { |street_type| city.downcase.include?(street_type) }
102
+ city = nil if invalid_city.present?
103
+
104
+ if city.present?
105
+ st_types = %w(ave blvd dr expy fwy hwy ln pkwy rd rte st ter trl tpke)
106
+ city_parts = city.split(' ')
107
+
108
+ invalid_city = city_parts.select do |city_part|
109
+ st_types.find { |st_type| city_part.downcase == st_type }
110
+ end
111
+
112
+ city = nil if invalid_city.present?
113
+ city = nil if city&.downcase&.include?("/")
114
+ city = nil if city&.downcase&.include?("www")
115
+ city = nil if city&.downcase&.include?("*")
116
+ city = nil if city&.downcase&.include?("number")
117
+ city = nil if city&.downcase&.include?("stock")
118
+ city = nil if city&.downcase&.include?(":")
119
+ city = nil if city&.downcase&.include?("ID")
120
+
121
+ city&.strip!
122
+ city&.squeeze!(" ")
123
+ city = nil if city.present? && city.length > 50
124
+ city = nil if city.present? && city.length < 4
125
+ end
126
+ end
127
+ city = city&.split(' ')&.map(&:capitalize).join(' ')
128
+ return city
129
+ end
130
+
131
+ ########## FORMAT STATE ##########
132
+
133
+ def format_state(state)
134
+ state = state&.gsub(/\s/, ' ')&.strip
135
+
136
+ if state.present?
137
+ states_hsh = { 'Alabama'=>'AL', 'Alaska'=>'AK', 'Arizona'=>'AZ', 'Arkansas'=>'AR', 'California'=>'CA', 'Colorado'=>'CO', 'Connecticut'=>'CT', 'Delaware'=>'DE', 'Florida'=>'FL', 'Georgia'=>'GA', 'Hawaii'=>'HI', 'Idaho'=>'ID', 'Illinois'=>'IL', 'Indiana'=>'IN', 'Iowa'=>'IA', 'Kansas'=>'KS', 'Kentucky'=>'KY', 'Louisiana'=>'LA', 'Maine'=>'ME', 'Maryland'=>'MD', 'Massachusetts'=>'MA', 'Michigan'=>'MI', 'Minnesota'=>'MN', 'Mississippi'=>'MS', 'Missouri'=>'MO', 'Montana'=>'MT', 'Nebraska'=>'NE', 'Nevada'=>'NV', 'New Hampshire'=>'NH', 'New Jersey'=>'NJ', 'New Mexico'=>'NM', 'New York'=>'NY', 'North Carolina'=>'NC', 'North Dakota'=>'ND', 'Ohio'=>'OH', 'Oklahoma'=>'OK', 'Oregon'=>'OR', 'Pennsylvania'=>'PA', 'Rhode Island'=>'RI', 'South Carolina'=>'SC', 'South Dakota'=>'SD', 'Tennessee'=>'TN', 'Texas'=>'TX', 'Utah'=>'UT', 'Vermont'=>'VT', 'Virginia'=>'VA', 'Washington'=>'WA', 'West Virginia'=>'WV', 'Wisconsin'=>'WI', 'Wyoming'=>'WY' }
138
+
139
+ state = state.tr('^A-Za-z', '')
140
+ if state.present? && state.length < 2
141
+ state = nil
142
+ elsif state.present? && state.length > 2
143
+ state = state.capitalize
144
+ states_hsh.map { |k,v| state = v if state == k }
145
+ end
146
+
147
+ if state.present?
148
+ state.upcase!
149
+ valid_state = states_hsh.find { |k,v| state == v }
150
+ state_code = valid_state&.last
151
+ return state_code
152
+ end
153
+ end
154
+ end
155
+
156
+
157
+ ########### FORMAT ZIP ###########
158
+
159
+ #CALL: Formatter.new.format_zip(zip)
160
+ def format_zip(zip)
161
+ zip = nil if !zip.scan(/[0-9]/).length.in?([4,5,8,9])
162
+ zip = zip&.gsub(/\s/, ' ')&.strip
163
+ zip = zip&.split('-')&.first
164
+ zip = nil if zip&.scan(/[A-Za-z]/)&.any?
165
+ (zip = "0#{zip}" if zip.length == 4) if zip.present?
166
+ (zip = nil if zip.length != 5) if zip.present?
167
+ zip&.strip!
168
+ zip&.squeeze!(" ")
169
+ return zip
170
+ end
171
+
172
+
173
+ end
174
+ end
@@ -0,0 +1,23 @@
1
+ module CRMFormatter
2
+ module Helpers
3
+
4
+ #CALL: Formatter.new.letter_case_check(street)
5
+ def self.letter_case_check(str)
6
+ if str.present?
7
+ flashes = str&.gsub(/[^ A-Za-z]/, '')&.strip&.split(' ')
8
+ flash = flashes&.reject {|e| e.length < 3 }.join(' ')
9
+
10
+ if flash.present?
11
+ has_caps = flash.scan(/[A-Z]/).any?
12
+ has_lows = flash.scan(/[a-z]/).any?
13
+ if !has_caps || !has_lows
14
+ str = str.split(' ')&.each { |el| el.capitalize! if el.gsub(/[^ A-Za-z]/, '')&.strip&.length > 2 }&.join(' ')
15
+ end
16
+ end
17
+ return str
18
+ end
19
+ end
20
+
21
+
22
+ end
23
+ end
@@ -0,0 +1,38 @@
1
+ module CRMFormatter
2
+ class Phone
3
+
4
+ ## Checks every phone number in table to verify that it meets phone criteria, then calls format_phone method to format Valid results. Otherwise destroys Invalid phone fields and associations.
5
+
6
+ # Call: Formatter.new.validate_phone(phone)
7
+ def validate_phone(phone)
8
+ phone_hsh = { phone: phone, valid_phone: nil, change: nil }
9
+ if phone.present?
10
+ phone = phone&.gsub(/\s/, ' ')&.strip
11
+ reg = Regexp.new("[(]?[0-9]{3}[ ]?[)-.]?[ ]?[0-9]{3}[ ]?[-. ][ ]?[0-9]{4}")
12
+ return phone_hsh if phone.first == "0" || phone.include?("(0") || !reg.match(phone)
13
+ phone_hsh[:valid_phone] = format_phone(phone)
14
+ phone_hsh[:change] = phone_hsh[:phone] != phone_hsh[:valid_phone]
15
+ end
16
+ phone_hsh
17
+ end
18
+
19
+ #################################
20
+ ## FORMATS PHONE AS: (000) 000-0000
21
+ ## Assumes phone is legitimate, then formats. Not designed to detect Valid phone number.
22
+
23
+ # Call: Formatter.new.format_phone(phone)
24
+ def format_phone(phone)
25
+ regex = Regexp.new("[A-Z]+[a-z]+")
26
+ if !phone.blank? && (phone != "N/A" || phone != "0") && !regex.match(phone)
27
+ phone_stripped = phone.gsub(/[^0-9]/, "")
28
+ (phone_stripped && phone_stripped[0] == "1") ? phone_step2 = phone_stripped[1..-1] : phone_step2 = phone_stripped
29
+
30
+ final_phone = !(phone_step2 && phone_step2.length < 10) ? "(#{phone_step2[0..2]}) #{(phone_step2[3..5])}-#{(phone_step2[6..9])}" : phone
31
+ else
32
+ final_phone = nil
33
+ end
34
+ return final_phone
35
+ end
36
+
37
+ end
38
+ end
@@ -1,3 +1,3 @@
1
1
  module CRMFormatter
2
- VERSION = "1.0.2-rc.1"
2
+ VERSION = "1.0.3-rc.1"
3
3
  end
@@ -0,0 +1,168 @@
1
+ module CRMFormatter
2
+ class Web
3
+
4
+ def initialize(args={})
5
+ @url_red_flags = args.fetch(:url_red_flags, [])
6
+ @link_red_flags = args.fetch(:link_red_flags, [])
7
+ @href_red_flags = args.fetch(:href_red_flags, [])
8
+ @ext_red_flags = args.fetch(:ext_red_flags, [])
9
+ @length_min = args.fetch(:length_min, 2)
10
+ @length_max = args.fetch(:length_max, 100)
11
+ end
12
+
13
+ def format_url(url)
14
+ url_hsh = {full_url: url, valid_url: nil, change: nil }
15
+ if url.present?
16
+ begin
17
+ url = url&.split('|')&.first
18
+ url = url&.split('\\')&.first
19
+ url&.gsub!(/\P{ASCII}/, '')
20
+ url = url&.downcase&.strip
21
+ return url_hsh if url&.length < @length_min
22
+
23
+ 2.times { remove_ww3(url) } if url.present?
24
+ url = remove_slashes(url) if url.present?
25
+ url&.strip!
26
+
27
+ return url_hsh if !url.present? || url&.include?(' ')
28
+ url = url[0..-2] if url[-1] == '/'
29
+
30
+ symbs = ['(', ')', '[', ']', '{', '}', '*', '@', '^', '$', '+', '!', '<', '>', '~', ',', "'"]
31
+ return url_hsh if symbs.any? {|symb| url&.include?(symb) }
32
+
33
+ uri = URI(url)
34
+ if uri.present?
35
+ host_parts = uri.host&.split(".")
36
+
37
+ if @ext_red_flags.any?
38
+ bad_host_sts = host_parts&.map { |part| TRUE if @ext_red_flags.any? {|ext| part == ext } }&.compact&.first
39
+ return url_hsh if bad_host_sts
40
+ end
41
+
42
+ host = uri.host
43
+ scheme = uri.scheme
44
+ url = "#{scheme}://#{host}" if host.present? && scheme.present?
45
+ url = "http://#{url}" if url[0..3] != "http"
46
+ url = url.gsub("//", "//www.") if !url.include?("www.")
47
+ return url_hsh if @url_red_flags.any? { |bad_text| url&.include?(bad_text) }
48
+ url_hsh[:valid_url] = convert_to_scheme_host(url) if url.present?
49
+ url_hsh[:change] = url_hsh[:valid_url] != url_hsh[:full_url]
50
+ end
51
+ rescue
52
+ return url_hsh
53
+ end
54
+ end
55
+ url_hsh
56
+ end
57
+
58
+
59
+ ###### Supporting Methods Below #######
60
+
61
+ #CALL: Formatter.new.remove_ww3(url)
62
+ def remove_ww3(url)
63
+ if url.present?
64
+ url.split('.').map { |part| url.gsub!(part,'www') if part.scan(/ww[0-9]/).any? }
65
+ url&.gsub!("www.www", "www")
66
+ end
67
+ end
68
+
69
+
70
+ # For rare cases w/ urls with mistaken double slash twice.
71
+ def remove_slashes(url)
72
+ if url.present? && url.include?('//')
73
+ parts = url.split('//')
74
+ return parts[0..1].join if parts.length > 2
75
+ end
76
+ return url
77
+ end
78
+
79
+
80
+ def extract_link(full_url)
81
+ url_hsh = format_url(full_url)
82
+ url = url_hsh[:valid_url]
83
+ link = full_url
84
+ link_hsh = {full_url: full_url, url: url, link: nil }
85
+ if url.present? && link.present? && link.length > @length_min
86
+ url = strip_down_url(url)
87
+ link = strip_down_url(link)
88
+ link&.gsub!(url, '')
89
+ link = link&.split('.net')&.last
90
+ link = link&.split('.com')&.last
91
+ link = link&.split('.org')&.last
92
+ link = "/#{link.split("/").reject(&:empty?).join("/")}" if link.present?
93
+ link_hsh[:link] = link if link.present? && link.length > @length_min
94
+ end
95
+ link_hsh
96
+ end
97
+
98
+
99
+ def strip_down_url(url)
100
+ if url.present?
101
+ url = url.downcase.strip
102
+ url = url.gsub('www.', '')
103
+ url = url.split('://')
104
+ url = url[-1]
105
+ return url
106
+ end
107
+ end
108
+
109
+
110
+ def remove_invalid_links(link)
111
+ link_hsh = {link: link, valid_link: nil, flags: nil }
112
+ if link.present?
113
+ invalid_chars = ['(', ')', '[', ']', '{', '}', '*', '@', '^', '$', '%', '+', '!', '<', '>', '~', ',', "'"]
114
+ @link_red_flags += invalid_chars
115
+ flags = @link_red_flags.select { |red| link&.include?(red) }
116
+ flags << "below #{@length_min}" if link.length < @length_min
117
+ flags << "over #{@length_max}" if link.length > @length_max
118
+ flags = flags.flatten.compact
119
+ flags.any? ? valid_link = nil : valid_link = link
120
+ link_hsh[:valid_link] = valid_link
121
+ link_hsh[:flags] = flags.join(', ')
122
+ end
123
+ link_hsh
124
+ end
125
+
126
+
127
+ def remove_invalid_hrefs(href)
128
+ href_hsh = {href: href, valid_href: nil, flags: nil }
129
+ if href.present?
130
+ symbs = ['{', '}', '*', '@', '^', '$', '%', '+', '!', '<', '>', '~']
131
+ @href_red_flags += symbs
132
+ href = href.split('|').join(' ')
133
+ href = href.split('/').join(' ')
134
+ href&.gsub!("(", ' ')
135
+ href&.gsub!(")", ' ')
136
+ href&.gsub!("[", ' ')
137
+ href&.gsub!("]", ' ')
138
+ href&.gsub!(",", ' ')
139
+ href&.gsub!("'", ' ')
140
+
141
+ flags = []
142
+ flags << "over #{@length_max}" if href.length > @length_max
143
+ invalid_text = Regexp.new(/[0-9]/)
144
+ flags << invalid_text&.match(href)
145
+ href = href&.downcase
146
+ href = href&.strip
147
+
148
+ flags << @href_red_flags.select { |red| href&.include?(red) }
149
+ flags = flags.flatten.compact.uniq
150
+ href_hsh[:valid_href] = href unless flags.any?
151
+ href_hsh[:flags] = flags.join(', ')
152
+ end
153
+ href_hsh
154
+ end
155
+
156
+
157
+ def convert_to_scheme_host(url)
158
+ if url.present?
159
+ uri = URI(url)
160
+ scheme = uri&.scheme
161
+ host = uri&.host
162
+ url = "#{scheme}://#{host}" if (scheme.present? && host.present?)
163
+ return url
164
+ end
165
+ end
166
+
167
+ end
168
+ end
data/menu.rb ADDED
@@ -0,0 +1,8 @@
1
+ require_relative "lib/crm_formatter/address.rb"
2
+
3
+ address = CRMFormatter::Address.new
4
+
5
+ system "clear"
6
+ puts "Welcome!"
7
+
8
+ puts address.state
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crm_formatter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2.pre.rc.1
4
+ version: 1.0.3.pre.rc.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Booth
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-05-12 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2018-05-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: pry
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.10.4
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.10.4
13
27
  description: Formats addresses, phones, emails, urls
14
28
  email:
15
29
  - 4rlm@protonmail.ch
@@ -21,9 +35,12 @@ files:
21
35
  - bin/crm_formatter
22
36
  - crm_formatter.gemspec
23
37
  - lib/crm_formatter.rb
24
- - lib/crm_formatter/translator.rb
38
+ - lib/crm_formatter/address.rb
39
+ - lib/crm_formatter/helpers.rb
40
+ - lib/crm_formatter/phone.rb
25
41
  - lib/crm_formatter/version.rb
26
- - x_crm_formatter.gemspec
42
+ - lib/crm_formatter/web.rb
43
+ - menu.rb
27
44
  homepage: https://github.com/4rlm/crm_formatter
28
45
  licenses:
29
46
  - MIT
@@ -1,16 +0,0 @@
1
- class CRMFormatter::Translator
2
- def initialize(language = "english")
3
- @language = language
4
- end
5
-
6
- def hi
7
- case @language
8
- when "spanish"
9
- "crm_formatter mundo"
10
- when "korean"
11
- "anyoung ha se yo"
12
- else
13
- "hello world"
14
- end
15
- end
16
- end
@@ -1,26 +0,0 @@
1
- Gem::Specification.new do |spec|
2
- spec.name = "crm_formatter"
3
- spec.version = "0.0.1"
4
- spec.default_executable = "crm_formatter"
5
- spec.license = "MIT"
6
- spec.required_rubygems_version = Gem::Requirement.new(">= 0") if spec.respond_to? :required_rubygems_version=
7
- spec.authors = ["Adam Booth"]
8
- spec.date = %q{2018-05-12}
9
- spec.description = %q{Formats addresses, phones, emails, urls}
10
- spec.email = %q{4rlm@protonmail.ch}
11
- spec.files = ["Rakefile", "lib/crm_formatter.rb", "lib/crm_formatter/translator.rb", "bin/crm_formatter"]
12
- spec.test_files = ["test/test_crm_formatter.rb"]
13
- spec.homepage = %q{http://rubygems.org/gems/crm_formatter}
14
- spec.require_paths = ["lib"]
15
- spec.rubygems_version = %q{1.6.2}
16
- spec.summary = %q{crm_formatter!}
17
-
18
- if spec.respond_to? :specification_version then
19
- spec.specification_version = 3
20
-
21
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
22
- else
23
- end
24
- else
25
- end
26
- end