steuernummer 1.0.0 → 1.1.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 +8 -8
- data/lib/steuernummer.rb +58 -30
- data/lib/steuernummer/tax_table.rb +32 -37
- data/lib/steuernummer/version.rb +1 -1
- data/test/test_steuernummer.rb +22 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YzNkZDA0ZjBkN2VlNzgxZmRmZDM1YTJmZTVhZDRiYzE2ZjVkM2I1NA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NjgzNjVhMDk0OGUwMGNiZTBlZTFlNzQ3NWZjMjI4ZjRlYWE3MzFmNw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MzE5MTUyYWEyZmVlMjlkYzc2YTMzNGRmYmYzZDI5Mzg4N2JmYTFmNDZmNDRh
|
10
|
+
ZTQyNDM3Y2Q0Yjg4MzU0YjE3YzdiYWQxNWY5OTBiYzA4NjM3YmRiNTJjOTY0
|
11
|
+
NzcxNGQwOTBhMTlhMDllMzIzMTgwNmY4ZGM1ZmU5ODEyMmUwNTg=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
Mjg1ZDk5MjBmYTFmMWFjNTA3Mzc5MGY4YmViMTY0YmU3YTE5YTY2MmNmNzM2
|
14
|
+
MDk4MTZiNWIzZGZiYzc4NTAwNDA1M2QyY2FmZWVjNDIwM2JiODJmN2Q0NmMz
|
15
|
+
MDdhNTYxNDQzMTVmY2QwYjkyMWRiZDlhMzFjNDRkZjdhNGQxOGI=
|
data/lib/steuernummer.rb
CHANGED
@@ -4,6 +4,7 @@ require "steuernummer/tax_table"
|
|
4
4
|
|
5
5
|
|
6
6
|
class Steuernummer
|
7
|
+
|
7
8
|
# Validate your German Steuernummer
|
8
9
|
#
|
9
10
|
# Example:
|
@@ -25,16 +26,30 @@ class Steuernummer
|
|
25
26
|
#
|
26
27
|
# ----------------------------------------------------------------
|
27
28
|
#
|
29
|
+
# >> tax_no = Steuernummer.new('151/815/08156','unknown')
|
30
|
+
# >> tax_no.is_valid?
|
31
|
+
# => true
|
32
|
+
#
|
33
|
+
# >> tax_no.region_wide_number
|
34
|
+
# => {:number => '151/815/08156', :region => 'unknown'}
|
35
|
+
#
|
36
|
+
# >> tax_no.country_wide_number
|
37
|
+
# => RuntimeError: Can't determine country wide number for a region wide number without knowing the region....
|
38
|
+
#
|
39
|
+
# >> Steuernummer.valid_regions
|
40
|
+
# => ["Baden-Württemberg", "Bayern", "Berlin", "Brandenburg",....]
|
41
|
+
#
|
28
42
|
# Arguments:
|
29
43
|
# steuernummer: (String)
|
30
44
|
# region: (String)
|
31
|
-
#
|
32
45
|
|
33
46
|
|
34
47
|
def initialize(tax_string, region = 'unknown')
|
35
|
-
|
36
|
-
|
37
|
-
|
48
|
+
if tax_string.class != String
|
49
|
+
raise("Please use a String as argument")
|
50
|
+
end
|
51
|
+
unless (region == 'unknown') || (Steuernummer.valid_regions.include? region)
|
52
|
+
raise("unknown region, please use 'unknown' or one of the entries you can get from Steuernummer.valid_regions}")
|
38
53
|
end
|
39
54
|
|
40
55
|
@tax_string = tax_string
|
@@ -42,18 +57,6 @@ class Steuernummer
|
|
42
57
|
@tax_rules = get_tax_rules(tax_string)
|
43
58
|
end
|
44
59
|
|
45
|
-
def get_tax_rules(tax_string)
|
46
|
-
tax_rules = Array.new
|
47
|
-
Steuernummer::TaxTable.tax_rules.each do |tax_rule|
|
48
|
-
if tax_string =~ tax_rule[:match_pattern_region]
|
49
|
-
tax_rules << tax_rule.merge(:type => :region)
|
50
|
-
elsif tax_string =~ tax_rule[:match_pattern_country]
|
51
|
-
tax_rules << tax_rule.merge(:type => :country)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
tax_rules
|
55
|
-
end
|
56
|
-
|
57
60
|
def is_valid?
|
58
61
|
if @provided_region != 'unknown'
|
59
62
|
regions = @tax_rules.map {|x| x[:region]}
|
@@ -63,26 +66,14 @@ class Steuernummer
|
|
63
66
|
end
|
64
67
|
end
|
65
68
|
|
66
|
-
def get_number_type
|
67
|
-
# returns :country or :region
|
68
|
-
tax_rule = @tax_rules.uniq{|x| x[:type]}
|
69
|
-
if tax_rule.count > 1
|
70
|
-
raise("both country and region type found, should be impossible!")
|
71
|
-
else
|
72
|
-
tax_rule.first[:type]
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
69
|
# (German: Vereinheitlichtes Bundesschema)
|
77
70
|
def country_wide_number
|
78
71
|
return nil if !is_valid?
|
79
72
|
if get_number_type == :country
|
80
73
|
{:number => @tax_string, :region => @tax_rules.first[:region]}
|
81
74
|
elsif (@tax_rules.count > 1) && (@provided_region == 'unknown')
|
82
|
-
raise("Can't determine country wide number for a region wide
|
83
|
-
|
84
|
-
Please pass one of the following as the second argument:
|
85
|
-
#{Steuernummer::TaxTable.tax_regions.join(', ')} ")
|
75
|
+
raise("Can't determine country wide number for a region wide number without knowing the region.
|
76
|
+
Please use only entries you can get from Steuernummer.valid_regions")
|
86
77
|
else
|
87
78
|
tax_rule = get_tax_rule_on_region
|
88
79
|
|
@@ -115,6 +106,30 @@ class Steuernummer
|
|
115
106
|
end
|
116
107
|
end
|
117
108
|
|
109
|
+
def self.valid_regions
|
110
|
+
Steuernummer::TaxTable.tax_rules.map {|x| x[:region]}
|
111
|
+
end
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
# ----------------------------------------------------------------
|
118
|
+
# private functions
|
119
|
+
# ----------------------------------------------------------------
|
120
|
+
private
|
121
|
+
|
122
|
+
|
123
|
+
def get_number_type
|
124
|
+
# returns :country or :region
|
125
|
+
tax_rule = @tax_rules.uniq{|x| x[:type]}
|
126
|
+
if tax_rule.count > 1
|
127
|
+
raise("both country and region type found, should be impossible!")
|
128
|
+
else
|
129
|
+
tax_rule.first[:type]
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
118
133
|
def get_tax_rule_on_region
|
119
134
|
if @tax_rules.count > 1
|
120
135
|
possible_regions = @tax_rules.map {|x| x[:region]}
|
@@ -124,4 +139,17 @@ class Steuernummer
|
|
124
139
|
@tax_rules.first
|
125
140
|
end
|
126
141
|
end
|
142
|
+
|
143
|
+
|
144
|
+
def get_tax_rules(tax_string)
|
145
|
+
tax_rules = Array.new
|
146
|
+
Steuernummer::TaxTable.tax_rules.each do |tax_rule|
|
147
|
+
if tax_string =~ tax_rule[:match_pattern_region]
|
148
|
+
tax_rules << tax_rule.merge(:type => :region)
|
149
|
+
elsif tax_string =~ tax_rule[:match_pattern_country]
|
150
|
+
tax_rules << tax_rule.merge(:type => :country)
|
151
|
+
end
|
152
|
+
end
|
153
|
+
tax_rules
|
154
|
+
end
|
127
155
|
end
|
@@ -5,105 +5,100 @@ 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
|
-
def self.tax_regions
|
9
|
-
Steuernummer::TaxTable.tax_rules.map {|x| x[:region]}
|
10
|
-
end
|
11
|
-
|
12
|
-
|
13
8
|
def self.tax_rules
|
14
9
|
[{:region => 'Baden-Württemberg',
|
15
|
-
:match_pattern_region =>
|
16
|
-
:match_pattern_country =>
|
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/,
|
17
12
|
:to_region_wide => lambda {|ff,bbb,uuuu,p| "#{ff}#{bbb}/#{uuuu}#{p}"},
|
18
13
|
:to_country_wide => lambda {|ff,bbb,uuuu,p| "28#{ff}0#{bbb}#{uuuu}#{p}"}},
|
19
14
|
|
20
15
|
{:region => 'Bayern',
|
21
|
-
:match_pattern_region =>
|
22
|
-
:match_pattern_country =>
|
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/,
|
23
18
|
:to_region_wide => lambda {|fff,bbb,uuuu,p| "#{fff}/#{bbb}/#{uuuu}#{p}"},
|
24
19
|
:to_country_wide => lambda {|fff,bbb,uuuu,p| "9#{fff}0#{bbb}#{uuuu}#{p}"}},
|
25
20
|
|
26
21
|
{:region => 'Berlin',
|
27
|
-
:match_pattern_region =>
|
28
|
-
:match_pattern_country =>
|
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/,
|
29
24
|
:to_region_wide => lambda {|ff,bbb,uuuu,p| "#{ff}/#{bbb}/#{uuuu}#{p}"},
|
30
25
|
:to_country_wide => lambda {|ff,bbb,uuuu,p| "11#{ff}0#{bbb}#{uuuu}#{p}"}},
|
31
26
|
|
32
27
|
{:region => 'Brandenburg',
|
33
|
-
:match_pattern_region =>
|
34
|
-
:match_pattern_country =>
|
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/,
|
35
30
|
:to_region_wide => lambda {|ff,bbb,uuuu,p| "0#{ff}/#{bbb}/#{uuuu}#{p}"},
|
36
31
|
:to_country_wide => lambda {|ff,bbb,uuuu,p| "30#{ff}0#{bbb}#{uuuu}#{p}"}},
|
37
32
|
|
38
33
|
{:region => 'Bremen',
|
39
|
-
:match_pattern_region =>
|
40
|
-
:match_pattern_country =>
|
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/ ,
|
41
36
|
:to_region_wide => lambda {|ff,bbb,uuuu,p| "#{ff} #{bbb} #{uuuu}#{p}"},
|
42
37
|
:to_country_wide => lambda {|ff,bbb,uuuu,p| "24#{ff}0#{bbb}#{uuuu}#{p}"}},
|
43
38
|
|
44
39
|
{:region => 'Hamburg',
|
45
|
-
:match_pattern_region =>
|
46
|
-
:match_pattern_country =>
|
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/,
|
47
42
|
:to_region_wide => lambda {|ff,bbb,uuuu,p| "#{ff}/#{bbb}/#{uuuu}#{p}"},
|
48
43
|
:to_country_wide => lambda {|ff,bbb,uuuu,p| "22#{ff}0#{bbb}#{uuuu}#{p}"}},
|
49
44
|
|
50
45
|
{:region => 'Hessen',
|
51
|
-
:match_pattern_region =>
|
52
|
-
:match_pattern_country =>
|
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/ ,
|
53
48
|
:to_region_wide => lambda {|ff,bbb,uuuu,p| "0#{ff} #{bbb} #{uuuu}#{p}"},
|
54
49
|
:to_country_wide => lambda {|ff,bbb,uuuu,p| "26#{ff}0#{bbb}#{uuuu}#{p}"}},
|
55
50
|
|
56
51
|
{:region => 'Mecklenburg-Vorpommern',
|
57
|
-
:match_pattern_region =>
|
58
|
-
:match_pattern_country =>
|
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/ ,
|
59
54
|
:to_region_wide => lambda {|ff,bbb,uuuu,p| "0#{ff}/#{bbb}/#{uuuu}#{p}"},
|
60
55
|
:to_country_wide => lambda {|ff,bbb,uuuu,p| "40#{ff}0#{bbb}#{uuuu}#{p}"}},
|
61
56
|
|
62
57
|
{:region => 'Niedersachsen',
|
63
|
-
:match_pattern_region =>
|
64
|
-
:match_pattern_country =>
|
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/,
|
65
60
|
:to_region_wide => lambda {|ff,bbb,uuuu,p| "#{ff}/#{bbb}/#{uuuu}#{p}"},
|
66
61
|
:to_country_wide => lambda {|ff,bbb,uuuu,p| "23#{ff}0#{bbb}#{uuuu}#{p}"}},
|
67
62
|
|
68
63
|
{:region => 'Nordrhein-Westfalen',
|
69
|
-
:match_pattern_region =>
|
70
|
-
:match_pattern_country =>
|
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/,
|
71
66
|
:to_region_wide => lambda {|fff,bbbb,uuu,p| "#{fff}/#{bbbb}/#{uuu}#{p}"},
|
72
67
|
:to_country_wide => lambda {|fff,bbbb,uuu,p| "5#{fff}0#{bbbb}#{uuu}#{p}"}},
|
73
68
|
|
74
69
|
{:region => 'Rheinland-Pfalz',
|
75
|
-
:match_pattern_region =>
|
76
|
-
:match_pattern_country =>
|
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/,
|
77
72
|
:to_region_wide => lambda {|ff,bbb,uuuu,p| "#{ff}/#{bbb}/#{uuuu}/#{p}"},
|
78
73
|
:to_country_wide => lambda {|ff,bbb,uuuu,p| "27#{ff}0#{bbb}#{uuuu}#{p}"}},
|
79
74
|
|
80
75
|
{:region => 'Saarland',
|
81
|
-
:match_pattern_region =>
|
82
|
-
:match_pattern_country =>
|
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/ ,
|
83
78
|
:to_region_wide => lambda {|ff,bbb,uuuu,p| "0#{ff}/#{bbb}/#{uuuu}#{p}"},
|
84
79
|
:to_country_wide => lambda {|ff,bbb,uuuu,p| "10#{ff}0#{bbb}#{uuuu}#{p}"}},
|
85
80
|
|
86
81
|
{:region => 'Sachsen',
|
87
|
-
:match_pattern_region =>
|
88
|
-
:match_pattern_country =>
|
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/ ,
|
89
84
|
:to_region_wide => lambda {|ff,bbb,uuuu,p| "2#{ff}/#{bbb}/#{uuuu}#{p}"},
|
90
85
|
:to_country_wide => lambda {|ff,bbb,uuuu,p| "32#{ff}0#{bbb}#{uuuu}#{p}"}},
|
91
86
|
|
92
87
|
{:region => 'Sachsen-Anhalt',
|
93
|
-
:match_pattern_region =>
|
94
|
-
:match_pattern_country =>
|
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/ ,
|
95
90
|
:to_region_wide => lambda {|ff,bbb,uuuu,p| "1#{ff}/#{bbb}/#{uuuu}#{p}"},
|
96
91
|
:to_country_wide => lambda {|ff,bbb,uuuu,p| "31#{ff}0#{bbb}#{uuuu}#{p}"}},
|
97
92
|
|
98
93
|
{:region => 'Schleswig-Holstein',
|
99
|
-
:match_pattern_region =>
|
100
|
-
:match_pattern_country =>
|
94
|
+
:match_pattern_region => /\A(?<ff>\d{2})\s(?<bbb>\d{3})\s(?<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/ ,
|
101
96
|
:to_region_wide => lambda {|ff,bbb,uuuu,p| "#{ff} #{bbb} #{uuuu}#{p}"},
|
102
97
|
:to_country_wide => lambda {|ff,bbb,uuuu,p| "21#{ff}0#{bbb}#{uuuu}#{p}"}},
|
103
98
|
|
104
99
|
{:region => 'Thüringen',
|
105
|
-
:match_pattern_region =>
|
106
|
-
:match_pattern_country =>
|
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/ ,
|
107
102
|
:to_region_wide => lambda {|ff,bbb,uuuu,p| "1#{ff}/#{bbb}/#{uuuu}#{p}"},
|
108
103
|
:to_country_wide => lambda {|ff,bbb,uuuu,p| "41#{ff}0#{bbb}#{uuuu}#{p}"}}
|
109
104
|
]
|
data/lib/steuernummer/version.rb
CHANGED
data/test/test_steuernummer.rb
CHANGED
@@ -52,6 +52,28 @@ class TestSteuernummer < Test::Unit::TestCase
|
|
52
52
|
assert_equal(wiki_entry[2], tax_number.country_wide_number[:number], "Error in number: expected: #{wiki_entry[2]}, but got: #{tax_number.country_wide_number[:number]}")
|
53
53
|
end
|
54
54
|
end
|
55
|
+
|
56
|
+
def test_faulty_region_number_entries
|
57
|
+
# number to long
|
58
|
+
assert_equal(false, (Steuernummer.new('93815/08152333','Baden-Württemberg').is_valid?))
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_needs_region
|
62
|
+
e = assert_raise RuntimeError do
|
63
|
+
Steuernummer.new('151/815/08156','unknown').country_wide_number
|
64
|
+
end
|
65
|
+
assert e.message.include? "Can't determine country wide number"
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_faulty_country_number_entries
|
69
|
+
# number to long
|
70
|
+
assert_equal(false, (Steuernummer.new('28930815081522342323','Baden-Württemberg').is_valid?))
|
71
|
+
end
|
72
|
+
|
73
|
+
|
74
|
+
def test_should_return_array_with_possible_regions
|
75
|
+
assert_equal(16, Steuernummer.valid_regions.count)
|
76
|
+
end
|
55
77
|
end
|
56
78
|
|
57
79
|
|
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.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bart Ariens
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-04-
|
11
|
+
date: 2014-04-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|