steuernummer 1.1.5 → 1.1.6
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/.gitignore +0 -0
- data/Gemfile +0 -0
- data/LICENSE.txt +0 -0
- data/README.md +0 -0
- data/Rakefile +0 -0
- data/lib/steuernummer.rb +17 -25
- data/lib/steuernummer/tax_table.rb +97 -98
- data/lib/steuernummer/version.rb +1 -1
- data/steuernummer.gemspec +1 -1
- data/test/test_steuernummer.rb +0 -0
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b50e9b188d2b9c80ea84ded8ad0fe1212b5b4bf563793eb8e43d5c620647132
|
4
|
+
data.tar.gz: 79a03850d53fa5d085d1c0a88e60ef059b1f0a9dfe05bb477038e02ee4a1e08c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: facb8ed196911b4c2104af74d5f4ee884e1b3d873402df64124422945233759de8f9281878cd27b4dcc937cdadef7eb1df30ad592943a243376016c9f5fcab2b
|
7
|
+
data.tar.gz: cfd66aedbef33de00c0e549bd332d28eca576593e396021cd2cb8be0f951f550a35797667677b301c6c711543dc691c951a97858a07591d5012d99abf08bf5d3
|
data/.gitignore
CHANGED
File without changes
|
data/Gemfile
CHANGED
File without changes
|
data/LICENSE.txt
CHANGED
File without changes
|
data/README.md
CHANGED
File without changes
|
data/Rakefile
CHANGED
File without changes
|
data/lib/steuernummer.rb
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
require "steuernummer/version"
|
3
3
|
require "steuernummer/tax_table"
|
4
4
|
|
5
|
-
|
6
5
|
class Steuernummer
|
7
6
|
|
8
7
|
# Validate your German Steuernummer
|
@@ -43,23 +42,22 @@ class Steuernummer
|
|
43
42
|
# steuernummer: (String)
|
44
43
|
# region: (String)
|
45
44
|
|
46
|
-
|
47
|
-
def initialize(tax_string, region = 'unknown')
|
45
|
+
def initialize(tax_string, region = "unknown")
|
48
46
|
if tax_string.class != String
|
49
47
|
raise("Please use a String as argument")
|
50
48
|
end
|
51
|
-
unless (region ==
|
49
|
+
unless (region == "unknown") || (Steuernummer.valid_regions.include? region)
|
52
50
|
raise("unknown region, please use 'unknown' or one of the entries you can get from Steuernummer.valid_regions}")
|
53
51
|
end
|
54
52
|
|
55
|
-
@tax_string
|
56
|
-
@provided_region
|
57
|
-
@tax_rules
|
53
|
+
@tax_string = tax_string
|
54
|
+
@provided_region = region
|
55
|
+
@tax_rules = get_tax_rules(tax_string)
|
58
56
|
end
|
59
57
|
|
60
58
|
def is_valid?
|
61
|
-
if @provided_region !=
|
62
|
-
regions = @tax_rules.map {|x| x[:region]}
|
59
|
+
if @provided_region != "unknown"
|
60
|
+
regions = @tax_rules.map { |x| x[:region] }
|
63
61
|
regions.include? @provided_region
|
64
62
|
else
|
65
63
|
!@tax_rules.empty?
|
@@ -70,8 +68,8 @@ class Steuernummer
|
|
70
68
|
def country_wide_number
|
71
69
|
return nil if !is_valid?
|
72
70
|
if get_number_type == :country
|
73
|
-
{:number => @tax_string, :region => @tax_rules.first[:region]}
|
74
|
-
elsif (@tax_rules.count > 1) && (@provided_region ==
|
71
|
+
{ :number => @tax_string, :region => @tax_rules.first[:region] }
|
72
|
+
elsif (@tax_rules.count > 1) && (@provided_region == "unknown")
|
75
73
|
raise("Can't determine country wide number for a region wide number without knowing the region.
|
76
74
|
Please use only entries you can get from Steuernummer.valid_regions")
|
77
75
|
else
|
@@ -81,9 +79,9 @@ class Steuernummer
|
|
81
79
|
arguments_array = match_data.to_a
|
82
80
|
arguments_array.shift
|
83
81
|
|
84
|
-
country_wide = tax_rule[:to_country_wide].call
|
82
|
+
country_wide = tax_rule[:to_country_wide].call(*arguments_array)
|
85
83
|
|
86
|
-
{:number => country_wide, :region => tax_rule[:region]}
|
84
|
+
{ :number => country_wide, :region => tax_rule[:region] }
|
87
85
|
end
|
88
86
|
end
|
89
87
|
|
@@ -91,7 +89,7 @@ class Steuernummer
|
|
91
89
|
def region_wide_number
|
92
90
|
return nil if !is_valid?
|
93
91
|
if get_number_type == :region
|
94
|
-
{:number => @tax_string, :region => @provided_region}
|
92
|
+
{ :number => @tax_string, :region => @provided_region }
|
95
93
|
elsif get_number_type == :country
|
96
94
|
# country_wide_numbers only have one rule, so it's always the first
|
97
95
|
tax_rule = @tax_rules.first
|
@@ -100,29 +98,24 @@ class Steuernummer
|
|
100
98
|
arguments_array = match_data.to_a
|
101
99
|
arguments_array.shift
|
102
100
|
|
103
|
-
region_wide = tax_rule[:to_region_wide].call
|
101
|
+
region_wide = tax_rule[:to_region_wide].call(*arguments_array)
|
104
102
|
|
105
|
-
{:number => region_wide, :region => tax_rule[:region]}
|
103
|
+
{ :number => region_wide, :region => tax_rule[:region] }
|
106
104
|
end
|
107
105
|
end
|
108
106
|
|
109
107
|
def self.valid_regions
|
110
|
-
Steuernummer::TaxTable.tax_rules.map {|x| x[:region]}
|
108
|
+
Steuernummer::TaxTable.tax_rules.map { |x| x[:region] }
|
111
109
|
end
|
112
110
|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
111
|
# ----------------------------------------------------------------
|
118
112
|
# private functions
|
119
113
|
# ----------------------------------------------------------------
|
120
114
|
private
|
121
115
|
|
122
|
-
|
123
116
|
def get_number_type
|
124
117
|
# returns :country or :region
|
125
|
-
tax_rule = @tax_rules.uniq{|x| x[:type]}
|
118
|
+
tax_rule = @tax_rules.uniq { |x| x[:type] }
|
126
119
|
if tax_rule.count > 1
|
127
120
|
raise("both country and region type found, should be impossible!")
|
128
121
|
else
|
@@ -132,7 +125,7 @@ class Steuernummer
|
|
132
125
|
|
133
126
|
def get_tax_rule_on_region
|
134
127
|
if @tax_rules.count > 1
|
135
|
-
possible_regions = @tax_rules.map {|x| x[:region]}
|
128
|
+
possible_regions = @tax_rules.map { |x| x[:region] }
|
136
129
|
found_region_index = possible_regions.index @provided_region
|
137
130
|
@tax_rules[found_region_index]
|
138
131
|
else
|
@@ -140,7 +133,6 @@ class Steuernummer
|
|
140
133
|
end
|
141
134
|
end
|
142
135
|
|
143
|
-
|
144
136
|
def get_tax_rules(tax_string)
|
145
137
|
tax_rules = Array.new
|
146
138
|
Steuernummer::TaxTable.tax_rules.each do |tax_rule|
|
@@ -5,102 +5,101 @@ class Steuernummer::TaxTable
|
|
5
5
|
# All values are based on: http://de.wikipedia.org/wiki/Steuernummer
|
6
6
|
# To keep it a bit readible the variable names are kept the same as
|
7
7
|
# in the wikipedia entry.
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
end
|
8
|
+
def self.tax_rules
|
9
|
+
[{ :region => "Baden-Württemberg",
|
10
|
+
:match_pattern_region => /\A(?<ff>\d{2})(?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})\z/,
|
11
|
+
:match_pattern_country => /\A28(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/,
|
12
|
+
:to_region_wide => lambda { |ff, bbb, uuuu, p| "#{ff}#{bbb}/#{uuuu}#{p}" },
|
13
|
+
:to_country_wide => lambda { |ff, bbb, uuuu, p| "28#{ff}0#{bbb}#{uuuu}#{p}" } },
|
14
|
+
|
15
|
+
{ :region => "Bayern",
|
16
|
+
:match_pattern_region => /\A(?<fff>\d{3})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})\z/,
|
17
|
+
:match_pattern_country => /\A9(?<fff>\d{3})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/,
|
18
|
+
:to_region_wide => lambda { |fff, bbb, uuuu, p| "#{fff}/#{bbb}/#{uuuu}#{p}" },
|
19
|
+
:to_country_wide => lambda { |fff, bbb, uuuu, p| "9#{fff}0#{bbb}#{uuuu}#{p}" } },
|
20
|
+
|
21
|
+
{ :region => "Berlin",
|
22
|
+
:match_pattern_region => /\A(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})\z/,
|
23
|
+
:match_pattern_country => /\A11(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/,
|
24
|
+
:to_region_wide => lambda { |ff, bbb, uuuu, p| "#{ff}/#{bbb}/#{uuuu}#{p}" },
|
25
|
+
:to_country_wide => lambda { |ff, bbb, uuuu, p| "11#{ff}0#{bbb}#{uuuu}#{p}" } },
|
26
|
+
|
27
|
+
{ :region => "Brandenburg",
|
28
|
+
:match_pattern_region => /\A0(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})\z/,
|
29
|
+
:match_pattern_country => /\A30(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/,
|
30
|
+
:to_region_wide => lambda { |ff, bbb, uuuu, p| "0#{ff}/#{bbb}/#{uuuu}#{p}" },
|
31
|
+
:to_country_wide => lambda { |ff, bbb, uuuu, p| "30#{ff}0#{bbb}#{uuuu}#{p}" } },
|
32
|
+
|
33
|
+
{ :region => "Bremen",
|
34
|
+
:match_pattern_region => /\A(?<ff>\d{2})\s(?<bbb>\d{3})\s(?<uuuu>\d{4})(?<p>\d{1})\z/,
|
35
|
+
:match_pattern_country => /\A24(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/,
|
36
|
+
:to_region_wide => lambda { |ff, bbb, uuuu, p| "#{ff} #{bbb} #{uuuu}#{p}" },
|
37
|
+
:to_country_wide => lambda { |ff, bbb, uuuu, p| "24#{ff}0#{bbb}#{uuuu}#{p}" } },
|
38
|
+
|
39
|
+
{ :region => "Hamburg",
|
40
|
+
:match_pattern_region => /\A(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})\z/,
|
41
|
+
:match_pattern_country => /\A22(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/,
|
42
|
+
:to_region_wide => lambda { |ff, bbb, uuuu, p| "#{ff}/#{bbb}/#{uuuu}#{p}" },
|
43
|
+
:to_country_wide => lambda { |ff, bbb, uuuu, p| "22#{ff}0#{bbb}#{uuuu}#{p}" } },
|
44
|
+
|
45
|
+
{ :region => "Hessen",
|
46
|
+
:match_pattern_region => /\A0(?<ff>\d{2})\s(?<bbb>\d{3})\s(?<uuuu>\d{4})(?<p>\d{1})\z/,
|
47
|
+
:match_pattern_country => /\A26(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/,
|
48
|
+
:to_region_wide => lambda { |ff, bbb, uuuu, p| "0#{ff} #{bbb} #{uuuu}#{p}" },
|
49
|
+
:to_country_wide => lambda { |ff, bbb, uuuu, p| "26#{ff}0#{bbb}#{uuuu}#{p}" } },
|
50
|
+
|
51
|
+
{ :region => "Mecklenburg-Vorpommern",
|
52
|
+
:match_pattern_region => /\A0(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})\z/,
|
53
|
+
:match_pattern_country => /\A40(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/,
|
54
|
+
:to_region_wide => lambda { |ff, bbb, uuuu, p| "0#{ff}/#{bbb}/#{uuuu}#{p}" },
|
55
|
+
:to_country_wide => lambda { |ff, bbb, uuuu, p| "40#{ff}0#{bbb}#{uuuu}#{p}" } },
|
56
|
+
|
57
|
+
{ :region => "Niedersachsen",
|
58
|
+
:match_pattern_region => /\A(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})\z/,
|
59
|
+
:match_pattern_country => /\A23(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/,
|
60
|
+
:to_region_wide => lambda { |ff, bbb, uuuu, p| "#{ff}/#{bbb}/#{uuuu}#{p}" },
|
61
|
+
:to_country_wide => lambda { |ff, bbb, uuuu, p| "23#{ff}0#{bbb}#{uuuu}#{p}" } },
|
62
|
+
|
63
|
+
{ :region => "Nordrhein-Westfalen",
|
64
|
+
:match_pattern_region => /\A(?<fff>\d{3})[\/](?<bbbb>\d{4})[\/](?<uuu>\d{3})(?<p>\d{1})\z/,
|
65
|
+
:match_pattern_country => /\A5(?<fff>\d{3})0(?<bbbb>\d{4})(?<uuu>\d{3})(?<p>\d{1})\z/,
|
66
|
+
:to_region_wide => lambda { |fff, bbbb, uuu, p| "#{fff}/#{bbbb}/#{uuu}#{p}" },
|
67
|
+
:to_country_wide => lambda { |fff, bbbb, uuu, p| "5#{fff}0#{bbbb}#{uuu}#{p}" } },
|
68
|
+
|
69
|
+
{ :region => "Rheinland-Pfalz",
|
70
|
+
:match_pattern_region => /\A(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})\z/,
|
71
|
+
:match_pattern_country => /\A27(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/,
|
72
|
+
:to_region_wide => lambda { |ff, bbb, uuuu, p| "#{ff}/#{bbb}/#{uuuu}#{p}" },
|
73
|
+
:to_country_wide => lambda { |ff, bbb, uuuu, p| "27#{ff}0#{bbb}#{uuuu}#{p}" } },
|
74
|
+
|
75
|
+
{ :region => "Saarland",
|
76
|
+
:match_pattern_region => /\A0(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})\z/,
|
77
|
+
:match_pattern_country => /\A10(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/,
|
78
|
+
:to_region_wide => lambda { |ff, bbb, uuuu, p| "0#{ff}/#{bbb}/#{uuuu}#{p}" },
|
79
|
+
:to_country_wide => lambda { |ff, bbb, uuuu, p| "10#{ff}0#{bbb}#{uuuu}#{p}" } },
|
80
|
+
|
81
|
+
{ :region => "Sachsen",
|
82
|
+
:match_pattern_region => /\A2(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})\z/,
|
83
|
+
:match_pattern_country => /\A32(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/,
|
84
|
+
:to_region_wide => lambda { |ff, bbb, uuuu, p| "2#{ff}/#{bbb}/#{uuuu}#{p}" },
|
85
|
+
:to_country_wide => lambda { |ff, bbb, uuuu, p| "32#{ff}0#{bbb}#{uuuu}#{p}" } },
|
86
|
+
|
87
|
+
{ :region => "Sachsen-Anhalt",
|
88
|
+
:match_pattern_region => /\A1(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})\z/,
|
89
|
+
:match_pattern_country => /\A31(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/,
|
90
|
+
:to_region_wide => lambda { |ff, bbb, uuuu, p| "1#{ff}/#{bbb}/#{uuuu}#{p}" },
|
91
|
+
:to_country_wide => lambda { |ff, bbb, uuuu, p| "31#{ff}0#{bbb}#{uuuu}#{p}" } },
|
92
|
+
|
93
|
+
{ :region => "Schleswig-Holstein",
|
94
|
+
:match_pattern_region => /\A(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})\z/,
|
95
|
+
:match_pattern_country => /\A21(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/,
|
96
|
+
:to_region_wide => lambda { |ff, bbb, uuuu, p| "#{ff}/#{bbb}/#{uuuu}#{p}" },
|
97
|
+
:to_country_wide => lambda { |ff, bbb, uuuu, p| "21#{ff}0#{bbb}#{uuuu}#{p}" } },
|
98
|
+
|
99
|
+
{ :region => "Thüringen",
|
100
|
+
:match_pattern_region => /\A1(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})\z/,
|
101
|
+
:match_pattern_country => /\A41(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/,
|
102
|
+
:to_region_wide => lambda { |ff, bbb, uuuu, p| "1#{ff}/#{bbb}/#{uuuu}#{p}" },
|
103
|
+
:to_country_wide => lambda { |ff, bbb, uuuu, p| "41#{ff}0#{bbb}#{uuuu}#{p}" } }]
|
104
|
+
end
|
106
105
|
end
|
data/lib/steuernummer/version.rb
CHANGED
data/steuernummer.gemspec
CHANGED
@@ -19,6 +19,6 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
-
spec.
|
22
|
+
spec.add_dependency "rake", ">= 12.3.3"
|
23
23
|
spec.add_development_dependency "test-unit", '~> 0'
|
24
24
|
end
|
data/test/test_steuernummer.rb
CHANGED
File without changes
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: steuernummer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bart Ariens
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-12-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -28,16 +28,16 @@ dependencies:
|
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
34
|
-
type: :
|
33
|
+
version: 12.3.3
|
34
|
+
type: :runtime
|
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: 12.3.3
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: test-unit
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -89,7 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
89
89
|
- !ruby/object:Gem::Version
|
90
90
|
version: '0'
|
91
91
|
requirements: []
|
92
|
-
rubygems_version: 3.
|
92
|
+
rubygems_version: 3.1.2
|
93
93
|
signing_key:
|
94
94
|
specification_version: 4
|
95
95
|
summary: Simple regex validator for German Steuernummer
|