i18n_alchemy 0.2.4 → 0.5.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 +5 -5
- data/CHANGELOG.md +27 -0
- data/README.md +4 -4
- data/lib/i18n_alchemy/attributes_parsing.rb +19 -4
- data/lib/i18n_alchemy/date_parser.rb +1 -1
- data/lib/i18n_alchemy/numeric_parser.rb +1 -1
- data/lib/i18n_alchemy/proxy.rb +10 -3
- data/lib/i18n_alchemy/version.rb +1 -1
- data/lib/i18n_alchemy.rb +1 -1
- data/test/action_view_test.rb +10 -23
- data/test/custom_parsers/my_custom_date_parser.rb +2 -2
- data/test/db/test_schema.rb +2 -2
- data/test/i18n_alchemy/proxy/attributes_parsing_test.rb +37 -19
- data/test/i18n_alchemy/proxy_test.rb +1 -1
- data/test/models/product.rb +4 -4
- data/test/models/supplier.rb +1 -1
- data/test/models/user.rb +1 -1
- data/test/test_helper.rb +14 -13
- metadata +27 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 1bc55c34e9ada128b790fe90e4917c2d1ed5a79b8ed1277d272b19ba2b7ddfaf
|
4
|
+
data.tar.gz: 94fadf745b6a0a50e4649c14489f2d5087d36b5ef9fb11daf158d437e86bebb3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0501ef9fedb09177f5dfcab536e5ab5cc9c838a92a6ee9ecfe5057774e2bbbc7b580381fea093aba04998d0b397fcc4d45a1cecb75fbe7c5ec7172c578004e26
|
7
|
+
data.tar.gz: f769303bd86f0e9c82145f8a0386baff7438ad8eca5b4d00c5a509734d7053b3c7375cc817976e07040f999e382ce7052901421af90d6e0c5fc7a84cb989fadc
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,30 @@
|
|
1
|
+
## v0.5.0 - 2022-01-15
|
2
|
+
|
3
|
+
* Drop support for Ruby < 2.5
|
4
|
+
* Drop support for Rails < 5.2
|
5
|
+
* Rails 7 support (no changes required) ([@JonathanFerreira](https://github.com/JonathanFerreira))
|
6
|
+
* Ruby 3.1 support (no changes required)
|
7
|
+
* Move CI to GitHub Actions
|
8
|
+
|
9
|
+
## v0.4.0 - 2020-03-30
|
10
|
+
|
11
|
+
* Ruby 3.0 support
|
12
|
+
* Rails 6.1 support
|
13
|
+
* `update_attributes` and `update_attributes!` are not available through the localized proxy in Rails 6.1, following their removal from Rails.
|
14
|
+
|
15
|
+
## v0.3.1 - 2020-02-11
|
16
|
+
|
17
|
+
* Ruby 2.6 & 2.7 support (no changes required)
|
18
|
+
* Rails 6 support ([@mayordwells](https://github.com/mayordwells))
|
19
|
+
* Add support for `update`/`update!` Active Record methods ([@tbk303](https://github.com/tbk303))
|
20
|
+
|
21
|
+
## v0.3.0 - 2018-09-08
|
22
|
+
|
23
|
+
* Update I18n dependency to require >= 0.7, allowing to install more recent versions ([@nazarhussain](https://github.com/nazarhussain))
|
24
|
+
* Rails 5.2 support ([@sega](https://github.com/sega))
|
25
|
+
* Ruby 2.5 support (no changes required)
|
26
|
+
* Drop support to Rails 3.2 and Ruby 1.9.3/2.0.x/2.1.x
|
27
|
+
|
1
28
|
## v0.2.4 - 2017-08-03
|
2
29
|
|
3
30
|
* Rails 5.1 and Ruby 2.4 support
|
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
## I18nAlchemy
|
2
2
|
|
3
|
-
[](http://badge.fury.io/rb/i18n_alchemy)
|
4
|
+
[](http://travis-ci.org/carlosantoniodasilva/i18n_alchemy)
|
5
|
+
[](https://codeclimate.com/github/carlosantoniodasilva/i18n_alchemy)
|
6
6
|
|
7
7
|
I18n date/number parsing/localization
|
8
8
|
|
@@ -151,7 +151,7 @@ And then just configure the attribute you want to use with this new parser:
|
|
151
151
|
```ruby
|
152
152
|
class Product < ActiveRecord::Base
|
153
153
|
include I18n::Alchemy
|
154
|
-
|
154
|
+
localize :released_month, :using => MyCustomDateParser
|
155
155
|
end
|
156
156
|
```
|
157
157
|
|
@@ -1,5 +1,10 @@
|
|
1
1
|
module I18n
|
2
2
|
module Alchemy
|
3
|
+
def self.support_update_attributes?
|
4
|
+
# `update_attributes` and `update_attributes!` were removed in Rails 6.1.
|
5
|
+
ActiveSupport.version < Gem::Version.new("6.1")
|
6
|
+
end
|
7
|
+
|
3
8
|
module AttributesParsing
|
4
9
|
def attributes=(attributes)
|
5
10
|
@target.attributes = parse_attributes(attributes)
|
@@ -9,12 +14,22 @@ module I18n
|
|
9
14
|
@target.assign_attributes(parse_attributes(attributes))
|
10
15
|
end
|
11
16
|
|
12
|
-
|
13
|
-
|
17
|
+
if I18n::Alchemy.support_update_attributes?
|
18
|
+
def update_attributes(attributes)
|
19
|
+
@target.update_attributes(parse_attributes(attributes))
|
20
|
+
end
|
21
|
+
|
22
|
+
def update_attributes!(attributes)
|
23
|
+
@target.update_attributes!(parse_attributes(attributes))
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def update(attributes)
|
28
|
+
@target.update(parse_attributes(attributes))
|
14
29
|
end
|
15
30
|
|
16
|
-
def
|
17
|
-
@target.
|
31
|
+
def update!(attributes)
|
32
|
+
@target.update!(parse_attributes(attributes))
|
18
33
|
end
|
19
34
|
|
20
35
|
def update_attribute(attribute, value)
|
data/lib/i18n_alchemy/proxy.rb
CHANGED
@@ -57,8 +57,15 @@ module I18n
|
|
57
57
|
# Delegate all method calls that are not translated to the target object.
|
58
58
|
# As the proxy does not have any other method, there is no need to
|
59
59
|
# override :respond_to, just delegate it to the target as well.
|
60
|
-
|
61
|
-
|
60
|
+
if ::RUBY_VERSION >= "2.7"
|
61
|
+
def method_missing(*args, **kwargs, &block)
|
62
|
+
@target.send(*args, **kwargs, &block)
|
63
|
+
end
|
64
|
+
ruby2_keywords :method_missing
|
65
|
+
else
|
66
|
+
def method_missing(*args, &block)
|
67
|
+
@target.send(*args, &block)
|
68
|
+
end
|
62
69
|
end
|
63
70
|
|
64
71
|
private
|
@@ -146,7 +153,7 @@ module I18n
|
|
146
153
|
|
147
154
|
def skip_column?(column_name)
|
148
155
|
column_name == @target_class.primary_key ||
|
149
|
-
column_name.
|
156
|
+
column_name.end_with?("_id") ||
|
150
157
|
@localized_attributes.key?(column_name)
|
151
158
|
end
|
152
159
|
end
|
data/lib/i18n_alchemy/version.rb
CHANGED
data/lib/i18n_alchemy.rb
CHANGED
data/test/action_view_test.rb
CHANGED
@@ -3,13 +3,13 @@ require "action_pack"
|
|
3
3
|
|
4
4
|
class ActionViewTest < I18n::Alchemy::TestCase
|
5
5
|
def setup
|
6
|
-
@template = ActionView::Base.new
|
6
|
+
@template = ActionView::Base.respond_to?(:empty) ? ActionView::Base.empty : ActionView::Base.new
|
7
7
|
@product = Product.new(
|
8
|
-
:
|
9
|
-
:
|
10
|
-
:
|
11
|
-
:
|
12
|
-
:
|
8
|
+
name: "Potato",
|
9
|
+
quantity: 10,
|
10
|
+
price: 1.99,
|
11
|
+
released_at: Date.new(2011, 2, 28),
|
12
|
+
last_sale_at: Time.mktime(2011, 2, 28, 13, 25, 30)
|
13
13
|
)
|
14
14
|
@localized = @product.localized
|
15
15
|
|
@@ -45,22 +45,9 @@ class ActionViewTest < I18n::Alchemy::TestCase
|
|
45
45
|
# Since we do not want to rely on Rails dom-assertions (neither from the
|
46
46
|
# framework nor from the extracted gem), we build our own :).
|
47
47
|
def assert_same_text_input(attribute, value)
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
end
|
53
|
-
|
54
|
-
def text_input_sorted_attributes(attribute_name, value)
|
55
|
-
size = rails4? ? ' ' : ' size="30" '
|
56
|
-
%Q[<input id="product_#{attribute_name}" name="product[#{attribute_name}]"#{size}type="text" value="#{value}" />]
|
57
|
-
end
|
58
|
-
|
59
|
-
def text_input_unsorted_attributes(attribute_name, value)
|
60
|
-
%Q[<input type="text" value="#{value}" name="product[#{attribute_name}]" id="product_#{attribute_name}" />]
|
61
|
-
end
|
62
|
-
|
63
|
-
def rails4?
|
64
|
-
ActionPack::VERSION::STRING.start_with? "4"
|
48
|
+
assert_equal(
|
49
|
+
%Q[<input type="text" value="#{value}" name="product[#{attribute}]" id="product_#{attribute}" />],
|
50
|
+
@template.text_field(:product, attribute, object: @localized)
|
51
|
+
)
|
65
52
|
end
|
66
53
|
end
|
@@ -3,12 +3,12 @@ module MyCustomDateParser
|
|
3
3
|
extend self
|
4
4
|
|
5
5
|
def localize(value)
|
6
|
-
I18n.localize value, :
|
6
|
+
I18n.localize value, format: :custom
|
7
7
|
end
|
8
8
|
|
9
9
|
protected
|
10
10
|
|
11
11
|
def i18n_format
|
12
|
-
I18n.t(:custom, :
|
12
|
+
I18n.t(:custom, scope: [:date, :formats])
|
13
13
|
end
|
14
14
|
end
|
data/test/db/test_schema.rb
CHANGED
@@ -4,7 +4,7 @@ class ProxyAttributesParsingTest < I18n::Alchemy::ProxyTestCase
|
|
4
4
|
# Attributes
|
5
5
|
def test_initializes_proxy_with_attributes
|
6
6
|
@localized = @product.localized(
|
7
|
-
:
|
7
|
+
name: "Banana", price: "0,99", released_at: "28/02/2011")
|
8
8
|
|
9
9
|
assert_equal 0.99, @product.price
|
10
10
|
assert_equal "0,99", @localized.price
|
@@ -14,7 +14,7 @@ class ProxyAttributesParsingTest < I18n::Alchemy::ProxyTestCase
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def test_assign_attributes
|
17
|
-
@localized.assign_attributes(:
|
17
|
+
@localized.assign_attributes(price: '1,99')
|
18
18
|
assert_equal "1,99", @localized.price
|
19
19
|
end
|
20
20
|
|
@@ -31,7 +31,7 @@ class ProxyAttributesParsingTest < I18n::Alchemy::ProxyTestCase
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def test_attributes_assignment
|
34
|
-
@localized.attributes = { :
|
34
|
+
@localized.attributes = { price: '1,99' }
|
35
35
|
assert_equal "1,99", @localized.price
|
36
36
|
end
|
37
37
|
|
@@ -41,27 +41,45 @@ class ProxyAttributesParsingTest < I18n::Alchemy::ProxyTestCase
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
-
def
|
45
|
-
@localized.
|
44
|
+
def test_update
|
45
|
+
@localized.update(price: '2,88')
|
46
46
|
assert_equal '2,88', @localized.price
|
47
47
|
assert_equal 2.88, @product.reload.price
|
48
48
|
end
|
49
49
|
|
50
|
-
def
|
50
|
+
def test_update_does_not_change_given_attributes_hash
|
51
51
|
assert_attributes_hash_is_unchanged do |attributes|
|
52
|
-
@localized.
|
52
|
+
@localized.update(attributes)
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
|
-
def
|
57
|
-
@localized.
|
56
|
+
def test_update!
|
57
|
+
@localized.update!(price: '2,88')
|
58
58
|
assert_equal '2,88', @localized.price
|
59
59
|
assert_equal 2.88, @product.reload.price
|
60
60
|
end
|
61
61
|
|
62
|
-
def
|
62
|
+
def test_update_bang_does_not_change_given_attributes_hash
|
63
63
|
assert_attributes_hash_is_unchanged do |attributes|
|
64
|
-
@localized.
|
64
|
+
@localized.update!(attributes)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
if I18n::Alchemy.support_update_attributes?
|
69
|
+
def test_update_attributes
|
70
|
+
silence_deprecations {
|
71
|
+
@localized.update_attributes(price: '2,88')
|
72
|
+
}
|
73
|
+
assert_equal '2,88', @localized.price
|
74
|
+
assert_equal 2.88, @product.reload.price
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_update_attributes!
|
78
|
+
silence_deprecations {
|
79
|
+
@localized.update_attributes!(price: '2,88')
|
80
|
+
}
|
81
|
+
assert_equal '2,88', @localized.price
|
82
|
+
assert_equal 2.88, @product.reload.price
|
65
83
|
end
|
66
84
|
end
|
67
85
|
|
@@ -73,40 +91,40 @@ class ProxyAttributesParsingTest < I18n::Alchemy::ProxyTestCase
|
|
73
91
|
|
74
92
|
# Nested Attributes
|
75
93
|
def test_should_assign_for_nested_attributes_for_collection_association
|
76
|
-
@supplier_localized.assign_attributes(:
|
94
|
+
@supplier_localized.assign_attributes(products_attributes: [{ price: '1,99' }, { price: '2,93' }])
|
77
95
|
assert_equal 2, @supplier_localized.products.size
|
78
96
|
assert_equal '1,99', @supplier_localized.products.first.localized.price
|
79
97
|
assert_equal '2,93', @supplier_localized.products.last.localized.price
|
80
98
|
end
|
81
99
|
|
82
100
|
def test_should_assign_for_nested_attributes_passing_a_hash_for_collection_with_unique_keys
|
83
|
-
@supplier_localized.assign_attributes(:
|
101
|
+
@supplier_localized.assign_attributes(products_attributes: { '0' => { price: '2,93', _destroy: 'false' }, '1' => { price: '2,85', _destroy: 'false' }})
|
84
102
|
prices = @supplier.products.map { |p| p.localized.price }.sort
|
85
103
|
assert_equal ['2,85', '2,93'], prices
|
86
104
|
end
|
87
105
|
|
88
106
|
def test_should_assign_for_nested_attributes_for_one_to_one_association
|
89
|
-
@supplier_localized.assign_attributes(:
|
107
|
+
@supplier_localized.assign_attributes(account_attributes: { account_number: 10, total_money: '100,87' })
|
90
108
|
account = @supplier_localized.account
|
91
109
|
assert_equal '10', account.account_number.to_s
|
92
110
|
assert_equal '100,87', account.localized.total_money
|
93
111
|
end
|
94
112
|
|
95
|
-
def
|
96
|
-
@supplier_localized.
|
113
|
+
def test_update_for_nested_attributes
|
114
|
+
@supplier_localized.update(account_attributes: { total_money: '99,87' })
|
97
115
|
assert_equal '99,87', @supplier_localized.account.localized.total_money
|
98
116
|
end
|
99
117
|
|
100
118
|
def test_attributes_assignment_for_nested
|
101
|
-
@supplier_localized.attributes = {:
|
119
|
+
@supplier_localized.attributes = { account_attributes: { total_money: '88,12' }}
|
102
120
|
assert_equal '88,12', @supplier_localized.account.localized.total_money
|
103
121
|
end
|
104
122
|
|
105
123
|
private
|
106
124
|
|
107
125
|
def assert_attributes_hash_is_unchanged
|
108
|
-
attributes = { :
|
126
|
+
attributes = { quantity: 1 }
|
109
127
|
yield attributes
|
110
|
-
assert_equal({ :
|
128
|
+
assert_equal({ quantity: 1 }, attributes)
|
111
129
|
end
|
112
130
|
end
|
@@ -3,7 +3,7 @@ require "test_helper"
|
|
3
3
|
class ProxyTest < I18n::Alchemy::ProxyTestCase
|
4
4
|
def test_delegates_orm_methods_to_target_object
|
5
5
|
assert @product.new_record?
|
6
|
-
assert @localized.save!(:
|
6
|
+
assert @localized.save!(validate: false)
|
7
7
|
assert !@product.new_record?
|
8
8
|
end
|
9
9
|
|
data/test/models/product.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
class Product < ActiveRecord::Base
|
2
2
|
include I18n::Alchemy
|
3
|
-
localize :total, :
|
4
|
-
localize :estimated_delivery_at, :
|
5
|
-
localize :estimated_last_comission_payment_at, :
|
6
|
-
localize :released_month, :
|
3
|
+
localize :total, using: :number
|
4
|
+
localize :estimated_delivery_at, using: :date
|
5
|
+
localize :estimated_last_comission_payment_at, using: :timestamp
|
6
|
+
localize :released_month, using: MyCustomDateParser
|
7
7
|
|
8
8
|
belongs_to :supplier
|
9
9
|
|
data/test/models/supplier.rb
CHANGED
data/test/models/user.rb
CHANGED
data/test/test_helper.rb
CHANGED
@@ -2,18 +2,9 @@ require "rubygems"
|
|
2
2
|
require "bundler/setup"
|
3
3
|
Bundler.require :test
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
require 'minitest/unit'
|
9
|
-
Minitest.autorun
|
10
|
-
MiniTestCase = Minitest::Test
|
11
|
-
rescue LoadError
|
12
|
-
# Rails 4.0/3.2
|
13
|
-
require 'minitest/unit'
|
14
|
-
MiniTest::Unit.autorun
|
15
|
-
MiniTestCase = MiniTest::Unit::TestCase
|
16
|
-
end
|
5
|
+
require 'minitest'
|
6
|
+
require 'minitest/unit'
|
7
|
+
Minitest.autorun
|
17
8
|
|
18
9
|
require "i18n_alchemy"
|
19
10
|
require "action_view"
|
@@ -31,7 +22,7 @@ Dir["test/custom_parsers/*.rb"].each { |file| require File.expand_path(file) }
|
|
31
22
|
Dir["test/models/*.rb"].each { |file| require File.expand_path(file) }
|
32
23
|
|
33
24
|
module I18n::Alchemy
|
34
|
-
class TestCase <
|
25
|
+
class TestCase < Minitest::Test
|
35
26
|
end
|
36
27
|
|
37
28
|
class ProxyTestCase < TestCase
|
@@ -49,5 +40,15 @@ module I18n::Alchemy
|
|
49
40
|
def teardown
|
50
41
|
I18n.locale = :en
|
51
42
|
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def silence_deprecations
|
47
|
+
old_silenced = ActiveSupport::Deprecation.silenced
|
48
|
+
ActiveSupport::Deprecation.silenced = true
|
49
|
+
yield
|
50
|
+
ensure
|
51
|
+
ActiveSupport::Deprecation.silenced = old_silenced
|
52
|
+
end
|
52
53
|
end
|
53
54
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: i18n_alchemy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Carlos Antonio da Silva
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,74 +16,74 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 4.0.0
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
22
|
+
version: '8.0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
29
|
+
version: 4.0.0
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
32
|
+
version: '8.0'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: i18n
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- - "
|
37
|
+
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '0.
|
39
|
+
version: '0.7'
|
40
40
|
type: :runtime
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
|
-
- - "
|
44
|
+
- - ">="
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '0.
|
46
|
+
version: '0.7'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: actionpack
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
51
|
- - ">="
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
53
|
+
version: 4.0.0
|
54
54
|
- - "<"
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version:
|
56
|
+
version: '8.0'
|
57
57
|
type: :development
|
58
58
|
prerelease: false
|
59
59
|
version_requirements: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
61
|
- - ">="
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version:
|
63
|
+
version: 4.0.0
|
64
64
|
- - "<"
|
65
65
|
- !ruby/object:Gem::Version
|
66
|
-
version:
|
66
|
+
version: '8.0'
|
67
67
|
- !ruby/object:Gem::Dependency
|
68
68
|
name: activerecord
|
69
69
|
requirement: !ruby/object:Gem::Requirement
|
70
70
|
requirements:
|
71
71
|
- - ">="
|
72
72
|
- !ruby/object:Gem::Version
|
73
|
-
version:
|
73
|
+
version: 4.0.0
|
74
74
|
- - "<"
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version:
|
76
|
+
version: '8.0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
81
|
- - ">="
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version:
|
83
|
+
version: 4.0.0
|
84
84
|
- - "<"
|
85
85
|
- !ruby/object:Gem::Version
|
86
|
-
version:
|
86
|
+
version: '8.0'
|
87
87
|
- !ruby/object:Gem::Dependency
|
88
88
|
name: minitest
|
89
89
|
requirement: !ruby/object:Gem::Requirement
|
@@ -102,14 +102,14 @@ dependencies:
|
|
102
102
|
name: rake
|
103
103
|
requirement: !ruby/object:Gem::Requirement
|
104
104
|
requirements:
|
105
|
-
- - "
|
105
|
+
- - ">="
|
106
106
|
- !ruby/object:Gem::Version
|
107
107
|
version: '10.1'
|
108
108
|
type: :development
|
109
109
|
prerelease: false
|
110
110
|
version_requirements: !ruby/object:Gem::Requirement
|
111
111
|
requirements:
|
112
|
-
- - "
|
112
|
+
- - ">="
|
113
113
|
- !ruby/object:Gem::Version
|
114
114
|
version: '10.1'
|
115
115
|
description: I18n date/number parsing/localization
|
@@ -150,9 +150,10 @@ files:
|
|
150
150
|
- test/models_test.rb
|
151
151
|
- test/test_helper.rb
|
152
152
|
homepage: ''
|
153
|
-
licenses:
|
153
|
+
licenses:
|
154
|
+
- MIT
|
154
155
|
metadata: {}
|
155
|
-
post_install_message:
|
156
|
+
post_install_message:
|
156
157
|
rdoc_options: []
|
157
158
|
require_paths:
|
158
159
|
- lib
|
@@ -160,16 +161,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
160
161
|
requirements:
|
161
162
|
- - ">="
|
162
163
|
- !ruby/object:Gem::Version
|
163
|
-
version:
|
164
|
+
version: 2.5.0
|
164
165
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
165
166
|
requirements:
|
166
167
|
- - ">="
|
167
168
|
- !ruby/object:Gem::Version
|
168
169
|
version: '0'
|
169
170
|
requirements: []
|
170
|
-
|
171
|
-
|
172
|
-
signing_key:
|
171
|
+
rubygems_version: 3.3.3
|
172
|
+
signing_key:
|
173
173
|
specification_version: 4
|
174
174
|
summary: I18n date/number parsing/localization
|
175
175
|
test_files:
|