address_titlecase 1.0.0 → 1.1.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.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/README.md +2 -1
- data/address_titlecase.gemspec +5 -5
- data/lib/address_titlecase/titleizer.rb +15 -4
- data/lib/address_titlecase/version.rb +1 -1
- metadata +22 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 974492d2050fcf627a4b956c5eeb38ff45e584c1bcb8f0bcb49b90ff05b6757b
|
4
|
+
data.tar.gz: 224eb280d4a96fdbc603a77fc271d24f81e2edd21711f90ee89755435093ec5b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 866ba854ceccfb680c1b32ab3eb6278174f76699eedaebac751ab1e6802b41de1e286f504f82098dd687196e600e7621ed5dcd2b9ac7f1f1b1846ca602402e96
|
7
|
+
data.tar.gz: b3aa3695d2d404abae90b2178515fe49b44775d04860b88684bc1f77431068da3dc4deb2431d344d80f65db2767a2f863dfc95751af7debaf5b6e40a79ea36c8
|
data/.rubocop.yml
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
# Address Titlecase
|
2
2
|
|
3
3
|
[](https://travis-ci.com/juliannaroen/address_titlecase)
|
4
|
+
[](https://badge.fury.io/rb/address_titlecase)
|
4
5
|
|
5
|
-
Titleize US addresses so that states, directions, and other abbreviations that would normally be titlecased by [`String#titleize`](https://apidock.com/rails/String/titleize) remain uppercase.
|
6
|
+
Titleize US and Canadian addresses so that states, directions, and other abbreviations that would normally be titlecased by [`String#titleize`](https://apidock.com/rails/String/titleize) remain uppercase.
|
6
7
|
|
7
8
|
```ruby
|
8
9
|
> "123 SESAME ST SE, SALEM, OR 97301".address_titlecase
|
data/address_titlecase.gemspec
CHANGED
@@ -23,9 +23,9 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
24
24
|
spec.require_paths = ['lib']
|
25
25
|
|
26
|
-
spec.add_development_dependency 'bundler'
|
27
|
-
spec.add_development_dependency 'pry-byebug'
|
28
|
-
spec.add_development_dependency 'rake'
|
29
|
-
spec.add_development_dependency 'rspec'
|
30
|
-
spec.add_development_dependency 'rubocop'
|
26
|
+
spec.add_development_dependency 'bundler', '~> 2.1'
|
27
|
+
spec.add_development_dependency 'pry-byebug', '~> 3.7'
|
28
|
+
spec.add_development_dependency 'rake', '~> 10.5'
|
29
|
+
spec.add_development_dependency 'rspec', '~> 3.8'
|
30
|
+
spec.add_development_dependency 'rubocop', '~> 0.72'
|
31
31
|
end
|
@@ -12,27 +12,38 @@ module AddressTitlecase
|
|
12
12
|
class Titleizer
|
13
13
|
class << self
|
14
14
|
US_STATES = %w[AL AK AZ AR CA CO CT DE FL GA HI ID IL IN IA KS KY LA ME MD MA MI MN MS MO MT NE NV NH NJ NM NY NC ND OH OK OR PA RI SC SD TN TX UT VT VA WA WV WI WY].freeze
|
15
|
-
|
15
|
+
US_TERRITORIES = %w[AS DC FM GU MH MP PW PR VI].freeze
|
16
|
+
|
17
|
+
CA_PROVINCES = %w[AB BC MB NB NL NS ON PE QC SK].freeze
|
18
|
+
CA_TERRITORIES = %w[NT NU YT].freeze
|
19
|
+
|
16
20
|
MILITARY = %w[APO FPO MPO AE AA AP].freeze
|
21
|
+
|
17
22
|
DIRECTIONS = %w[NE NW SE SW].freeze
|
18
23
|
COUNTRIES = %w[USA].freeze
|
19
24
|
MISC = %w[PO RR].freeze
|
20
25
|
|
21
|
-
REMAIN_UPCASE = US_STATES |
|
26
|
+
REMAIN_UPCASE = US_STATES | US_TERRITORIES | CA_PROVINCES | CA_TERRITORIES | MILITARY | DIRECTIONS | COUNTRIES | MISC
|
22
27
|
|
23
|
-
def titleize(address, opts)
|
28
|
+
def titleize(address, opts = {})
|
24
29
|
overrides = opts['overrides'] || opts[:overrides] || {}
|
25
30
|
address.gsub(/\w+['’]?\w*/) do |word|
|
26
31
|
overriden_word = overrides[word]
|
27
32
|
if overriden_word
|
28
33
|
overriden_word
|
29
|
-
elsif REMAIN_UPCASE.include?(word.upcase)
|
34
|
+
elsif REMAIN_UPCASE.include?(word.upcase) || contains_digits?(word)
|
30
35
|
word.upcase
|
31
36
|
else
|
32
37
|
word.capitalize
|
33
38
|
end
|
34
39
|
end
|
35
40
|
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def contains_digits?(word)
|
45
|
+
!word.count('0-9').zero?
|
46
|
+
end
|
36
47
|
end
|
37
48
|
end
|
38
49
|
end
|
metadata
CHANGED
@@ -1,85 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: address_titlecase
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- juliannaroen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-05-
|
11
|
+
date: 2020-05-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.1'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '2.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: pry-byebug
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '3.7'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '3.7'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '10.5'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '10.5'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '3.8'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '3.8'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rubocop
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
75
|
+
version: '0.72'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
82
|
+
version: '0.72'
|
83
83
|
description:
|
84
84
|
email:
|
85
85
|
- jsroen@gmail.com
|