biggs 0.6.0 → 0.7.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 72743e6a2efe86f4e3954f6783380627afa89d944c0f23eb8f5e05ae271c24aa
4
- data.tar.gz: eadb5928335ad7a9dfe362fcfa3bf7bc6b156ad0a0051c046c680c39188cd020
3
+ metadata.gz: 7aa8d5152785fa038f6bffa57fce153cbf2c2a9f11b7c65723bf8fbb75d9688e
4
+ data.tar.gz: c0010a02600e417e3a90d9799a1bec898fe015ef8aa10b0d6f1c6471e9b288a4
5
5
  SHA512:
6
- metadata.gz: 5deb05a75009544a7439169f7fb12bacff1ec3643b51b9715f44eb0866961dee09138ceb87702c8d1977b4643f41531be85646fd0bd91b551030b5855ff0c8a2
7
- data.tar.gz: 17bc4a86075d4c56b3128d0a1d209f06446ca9437095cdb921393179d6335a3559b30524ee4d11e9ba8da747900859e95370748cc8c627d88d1e81ddc1f2ced3
6
+ metadata.gz: b74223bcdb43f5c8133c8bdeaa94332f0919569be4204e0d635781759e6c26027f2a2f365b389deb2a9b384c6c4f3b1c619551e1aa116918fef823905b3656fe
7
+ data.tar.gz: 1a9c63cca3fa960dfa0205065e4bf541c934b03b42e516a04b1724600ce3f6bf72231477994c21a690cee727fcba05458c4c99f7e5f666847bef207f314338e0
@@ -0,0 +1,23 @@
1
+ name: CI
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ test:
7
+
8
+ runs-on: ubuntu-latest
9
+
10
+ strategy:
11
+ fail-fast: false
12
+ matrix:
13
+ ruby: ["2.7", "3.0", "3.1", "3.2", ruby-head]
14
+
15
+ steps:
16
+ - uses: actions/checkout@v3
17
+ - name: Set up Ruby
18
+ uses: ruby/setup-ruby@v1
19
+ with:
20
+ bundler-cache: true # 'bundle install' and cache gems
21
+ ruby-version: ${{ matrix.ruby }}
22
+ - name: Run tests
23
+ run: bundle exec rake
data/CHANGES.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ### dev
2
2
 
3
+ ### 0.7.0 / 2023-12-01
4
+
5
+ * Added formatter option: remove_empty_lines
6
+
3
7
  ### 0.6.0 / 2022-04-08
4
8
 
5
9
  * Remove not only trailing but also leading newline from formatted address
data/README.md CHANGED
@@ -8,15 +8,17 @@ As a ruby gem:
8
8
 
9
9
  ### Standalone usage
10
10
 
11
- f = Biggs::Formatter.new
12
-
13
- f.format("de", # <= ISO alpha 2 code
14
- :recipient => "Yolk Sebastian Munz & Julia Soergel GbR",
15
- :street => "Musterallee 12", # <= street + house number
16
- :city => "Ausgedacht",
17
- :zip => 12345,
18
- :state => "Nowhere" # <= state/province/region
19
- )
11
+ ```ruby
12
+ f = Biggs::Formatter.new
13
+
14
+ f.format("de", # <= ISO alpha 2 code
15
+ :recipient => "Yolk Sebastian Munz & Julia Soergel GbR",
16
+ :street => "Musterallee 12", # <= street + house number
17
+ :city => "Ausgedacht",
18
+ :zip => 12345,
19
+ :state => "Nowhere" # <= state/province/region
20
+ )
21
+ ```
20
22
 
21
23
  returns
22
24
 
@@ -29,7 +31,9 @@ At the moment Biggs::Formatter.new accepts only one option:
29
31
 
30
32
  *blank_country_on* ISO alpha 2 code (single string or array) of countries the formatter should skip the line "country" (for national shipping).
31
33
 
32
- Biggs::Formatter.new(blank_country_on: "de")
34
+ ```ruby
35
+ Biggs::Formatter.new(blank_country_on: "de")
36
+ ```
33
37
 
34
38
  With the data from the above example this would return:
35
39
 
@@ -39,41 +43,49 @@ With the data from the above example this would return:
39
43
 
40
44
  ### Usage with Class
41
45
 
42
- class Address
43
- include Biggs
46
+ ```ruby
47
+ class Address
48
+ include Biggs
44
49
 
45
- biggs :postal_address
46
- end
50
+ biggs :postal_address
51
+ end
52
+ ```
47
53
 
48
54
  This adds the method postal_address to your Address-model, and assumes the presence of the methods/columns recipient, street, city, zip, state, and country to get the address data. Country should return the ISO-code (e.g. 'us', 'fr', 'de').
49
55
 
50
56
  You can customize the method-names biggs will use by passing in a hash of options:
51
57
 
52
- class Address
53
- include Biggs
58
+ ```ruby
59
+ class Address
60
+ include Biggs
54
61
 
55
- biggs :postal_address,
56
- :zip => :postal_code,
57
- :country => :country_code,
58
- :street => Proc.new {|address| "#{address.street} #{address.house_number}" }
59
- end
62
+ biggs :postal_address,
63
+ :zip => :postal_code,
64
+ :country => :country_code,
65
+ :street => Proc.new {|address| "#{address.street} #{address.house_number}" }
66
+ end
67
+ ```
60
68
 
61
69
  You can pass in a symbol to let biggs call a different method on your Address-model, or a Proc-object to create your data on the fly.
62
70
 
63
71
  You can even pass in a array of symbols:
64
72
 
65
- class Address
66
- include Biggs
73
+ ```ruby
74
+ class Address
75
+ include Biggs
67
76
 
68
- biggs :postal_address,
69
- :recipient => [:company_name, :person_name]
70
- end
77
+ biggs :postal_address,
78
+ :recipient => [:company_name, :person_name]
79
+ end
80
+ ```
71
81
 
72
82
  This will call the methods company_name and person_name on your address-instance, remove any blank returned values and join the rest by a line break.
73
83
 
74
84
  To access the formatted address string, simply call the provided method on an address instance:
75
85
 
76
- Address.new.postal_address
86
+ ```ruby
87
+ Address.new.postal_address
88
+ ```
77
89
 
78
90
  If you pass in a ISO alpha 2 code as :country that is not supported by biggs, it will choose the US-format for addresses with an state specified, and the french/german format for addresses without an state.
79
91
 
@@ -149,4 +161,4 @@ biggs knows how to format addresses of over 60 different countries. If you are m
149
161
 
150
162
  biggs is tested to behave well with ActiveSupport 3 to 7
151
163
 
152
- Copyright (c) 2009-2022 Yolk Sebastian Munz & Julia Soergel GbR
164
+ Copyright (c) 2009-2023 mite GmbH
data/country_names.yml CHANGED
@@ -50,6 +50,7 @@ co: Colombia
50
50
  cr: Costa Rica
51
51
  cu: Cuba
52
52
  cv: Cape Verde
53
+ cw: Curaçao
53
54
  cx: Christmas Island
54
55
  cy: Cyprus
55
56
  cz: Czech Republic
@@ -239,6 +240,7 @@ vn: Vietnam
239
240
  vu: Vanuatu
240
241
  wf: Wallis and Futuna
241
242
  ws: Samoa
243
+ xk: Kosovo
242
244
  ye: Yemen
243
245
  yt: Mayotte
244
246
  za: South Africa
data/formats.yml CHANGED
@@ -68,6 +68,11 @@ cn: |-
68
68
  {{street}}
69
69
  {{zip}} {{city}} {{state}}
70
70
  {{country}}
71
+ cw: |-
72
+ {{recipient}}
73
+ {{street}}
74
+ {{zip}} {{city}}
75
+ {{country}}
71
76
  cz: |-
72
77
  {{recipient}}
73
78
  {{street}}
@@ -343,6 +348,11 @@ us: |-
343
348
  {{street}}
344
349
  {{city}} {{state}} {{zip}}
345
350
  {{country}}
351
+ xk: |-
352
+ {{recipient}}
353
+ {{street}}
354
+ {{zip}} {{city}}
355
+ {{country}}
346
356
  ye: |-
347
357
  {{recipient}}
348
358
  {{street}}
@@ -6,6 +6,7 @@ module Biggs
6
6
 
7
7
  def initialize(options={})
8
8
  @blank_country_on = [options[:blank_country_on]].compact.flatten.map{|s| s.to_s.downcase}
9
+ @remove_empty_lines = !!options[:remove_empty_lines]
9
10
  end
10
11
 
11
12
  def format(iso_code, values={})
@@ -19,6 +20,7 @@ module Biggs
19
20
  format_string.gsub!(/\{\{#{key}\}\}/, (values[key] || "").to_s)
20
21
  end
21
22
  format_string.gsub!(/\{\{country\}\}/, country_name)
23
+ format_string.gsub!(/\n(\s+)?\n/, "\n") if @remove_empty_lines
22
24
  format_string.strip
23
25
  end
24
26
 
data/lib/biggs/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Biggs
2
- VERSION = "0.6.0"
2
+ VERSION = "0.7.0"
3
3
  end
data/lib/biggs.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'active_support'
2
+ require 'active_support/core_ext'
2
3
  require 'biggs/format'
3
4
  require 'biggs/formatter'
4
5
  require 'biggs/concern'
@@ -4,33 +4,33 @@ FAKE_ATTR_WITH_STATE = {:state => "STATE", :city => "CITY", :zip => 12345, :stre
4
4
  FAKE_ATTR_WO_STATE = {:city => "CITY", :zip => 12345, :street => "STREET", :recipient => "MR. X"}
5
5
 
6
6
  describe Biggs::Formatter, "with defaults" do
7
-
7
+
8
8
  before { @biggs = Biggs::Formatter.new }
9
-
9
+
10
10
  it "should format to us format" do
11
11
  @biggs.format('us', FAKE_ATTR_WITH_STATE).should eql("MR. X\nSTREET\nCITY STATE 12345\nUnited States of America")
12
12
  end
13
-
13
+
14
14
  it "should format to de format" do
15
15
  @biggs.format('de', FAKE_ATTR_WITH_STATE).should eql("MR. X\nSTREET\n12345 CITY\nGermany")
16
16
  end
17
-
17
+
18
18
  it "should format to british format" do
19
19
  @biggs.format('gb', FAKE_ATTR_WITH_STATE).should eql("MR. X\nSTREET\nCITY\nSTATE\n12345\nUnited Kingdom")
20
20
  end
21
-
21
+
22
22
  it "should format to fr format" do
23
23
  @biggs.format('fr', FAKE_ATTR_WO_STATE).should eql("MR. X\nSTREET\n12345 CITY\nFrance")
24
24
  end
25
-
25
+
26
26
  it "should format to fr format if country_code unknown and there is no STATE given" do
27
27
  @biggs.format('unknown', FAKE_ATTR_WO_STATE).should eql("MR. X\nSTREET\n12345 CITY\nunknown")
28
28
  end
29
-
29
+
30
30
  it "should format to us format if country_code unknown and there is no STATE given" do
31
31
  @biggs.format('unknown', FAKE_ATTR_WITH_STATE).should eql("MR. X\nSTREET\nCITY STATE 12345\nunknown")
32
32
  end
33
-
33
+
34
34
  it "should format to no(rwegian) format" do
35
35
  @biggs.format('no', FAKE_ATTR_WITH_STATE).should eql("MR. X\nSTREET\n12345 CITY\nNorway")
36
36
  end
@@ -38,43 +38,56 @@ describe Biggs::Formatter, "with defaults" do
38
38
  it "should format to NC format" do
39
39
  @biggs.format('nc', FAKE_ATTR_WITH_STATE).should eql("MR. X\nSTREET\n12345 CITY\nNew Caledonia")
40
40
  end
41
-
41
+
42
42
  it "should use country name if Country is known but format not" do
43
43
  @biggs.format('af', FAKE_ATTR_WO_STATE).should eql("MR. X\nSTREET\n12345 CITY\nAfghanistan")
44
44
  end
45
-
45
+
46
46
  it "should use ISO Code if Country is unknown" do
47
47
  @biggs.format('xx', FAKE_ATTR_WO_STATE).should eql("MR. X\nSTREET\n12345 CITY\nxx")
48
48
  end
49
-
49
+
50
50
  end
51
51
 
52
52
  describe Biggs, "with options" do
53
-
53
+
54
54
  describe "blank_country_on de" do
55
55
  before { @biggs = Biggs::Formatter.new(:blank_country_on => 'de') }
56
-
56
+
57
57
  it "should have blank country in 'de' address" do
58
58
  @biggs.format('de', FAKE_ATTR_WO_STATE).should eql("MR. X\nSTREET\n12345 CITY")
59
59
  end
60
-
60
+
61
61
  it "should have country in 'fr' address" do
62
62
  @biggs.format('fr', FAKE_ATTR_WO_STATE).should eql("MR. X\nSTREET\n12345 CITY\nFrance")
63
63
  end
64
-
64
+
65
65
  end
66
-
66
+
67
67
  describe "blank_country_on multiple (US,de)" do
68
68
  before { @biggs = Biggs::Formatter.new(:blank_country_on => ['US', "de"]) }
69
-
69
+
70
70
  it "should have blank country in 'us' address" do
71
71
  @biggs.format('us', FAKE_ATTR_WITH_STATE).should eql("MR. X\nSTREET\nCITY STATE 12345")
72
72
  end
73
-
73
+
74
74
  it "should have country in 'fr' address" do
75
75
  @biggs.format('fr', FAKE_ATTR_WITH_STATE).should eql("MR. X\nSTREET\n12345 CITY\nFrance")
76
76
  end
77
-
77
+
78
+ end
79
+
80
+ describe "remove_empty_lines" do
81
+ before { @biggs = Biggs::Formatter.new(:remove_empty_lines => true) }
82
+
83
+
84
+ it "should remove empty lines" do
85
+ @biggs.format('gb', FAKE_ATTR_WO_STATE).should eql("MR. X\nSTREET\nCITY\n12345\nUnited Kingdom")
86
+ end
87
+
88
+ it "should format normally without empty lines" do
89
+ @biggs.format('gb', FAKE_ATTR_WITH_STATE).should eql("MR. X\nSTREET\nCITY\nSTATE\n12345\nUnited Kingdom")
90
+ end
91
+
78
92
  end
79
-
80
- end
93
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: biggs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sebastian Munz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-08 00:00:00.000000000 Z
11
+ date: 2023-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -88,6 +88,7 @@ executables: []
88
88
  extensions: []
89
89
  extra_rdoc_files: []
90
90
  files:
91
+ - ".github/workflows/ci.yml"
91
92
  - ".gitignore"
92
93
  - ".rvmrc"
93
94
  - CHANGES.md
@@ -127,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
128
  - !ruby/object:Gem::Version
128
129
  version: '0'
129
130
  requirements: []
130
- rubygems_version: 3.1.6
131
+ rubygems_version: 3.3.7
131
132
  signing_key:
132
133
  specification_version: 4
133
134
  summary: biggs is a small ruby gem/rails plugin for formatting postal addresses from