code-box 1.1.2 → 2.0.pre1
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 +7 -0
- data/.ruby-version +1 -1
- data/Gemfile.lock +26 -29
- data/code-box.gemspec +5 -4
- data/lib/code-box/acts_as_code.rb +20 -21
- data/lib/code-box/code_attribute.rb +3 -1
- data/lib/code-box/version.rb +1 -1
- data/test/code-box/test_acts_as_code.rb +7 -6
- data/test/code-box/test_code_attribute.rb +2 -0
- data/test/helper.rb +5 -7
- data/test/resources/models.rb +12 -12
- metadata +42 -44
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b5afe4ddbba5d1d56cbc3138bf18f2f90362bbe847c1012f70f4e20246d6605b
|
4
|
+
data.tar.gz: d193e966b4d7aad65ac25e03ebe8b7c4ccebcf17b5581b292840b12118c93540
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 53f339272afdd05eb062555f81a9a145308d060eaef3252cca5bd5e66c9526191b616332d07d1eeb6871c2a7972b714d6474ade829e2f075a582110117a9ab4a
|
7
|
+
data.tar.gz: 5d80e4739ef4722b273e34ae6321e40d9c3e3e684587b797437ad3bd10931ec64237e36809f2757c97a9cd608ccc933b2d79d1e94ee22d9ec322e7115ad0cab7
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-
|
1
|
+
ruby-2.7.4
|
data/Gemfile.lock
CHANGED
@@ -1,44 +1,41 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
code-box (1.1.
|
4
|
+
code-box (1.1.3)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
-
activemodel (
|
10
|
-
activesupport (=
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
minitest (4.7.5)
|
29
|
-
multi_json (1.8.0)
|
30
|
-
rake (10.1.0)
|
31
|
-
sqlite3 (1.3.8)
|
32
|
-
thread_safe (0.1.3)
|
33
|
-
atomic
|
34
|
-
tzinfo (0.3.37)
|
9
|
+
activemodel (7.0.4.1)
|
10
|
+
activesupport (= 7.0.4.1)
|
11
|
+
activerecord (7.0.4.1)
|
12
|
+
activemodel (= 7.0.4.1)
|
13
|
+
activesupport (= 7.0.4.1)
|
14
|
+
activesupport (7.0.4.1)
|
15
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
16
|
+
i18n (>= 1.6, < 2)
|
17
|
+
minitest (>= 5.1)
|
18
|
+
tzinfo (~> 2.0)
|
19
|
+
bigdecimal (3.1.3)
|
20
|
+
concurrent-ruby (1.1.10)
|
21
|
+
i18n (1.12.0)
|
22
|
+
concurrent-ruby (~> 1.0)
|
23
|
+
minitest (5.17.0)
|
24
|
+
rake (13.0.6)
|
25
|
+
sqlite3 (1.6.0-x86_64-darwin)
|
26
|
+
tzinfo (2.0.5)
|
27
|
+
concurrent-ruby (~> 1.0)
|
35
28
|
|
36
29
|
PLATFORMS
|
37
|
-
|
30
|
+
x86_64-darwin-21
|
38
31
|
|
39
32
|
DEPENDENCIES
|
40
|
-
activerecord (~>
|
33
|
+
activerecord (~> 7.0)
|
34
|
+
bigdecimal
|
41
35
|
code-box!
|
42
36
|
minitest
|
43
37
|
rake
|
44
38
|
sqlite3
|
39
|
+
|
40
|
+
BUNDLED WITH
|
41
|
+
2.4.1
|
data/code-box.gemspec
CHANGED
@@ -3,8 +3,9 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
require File.expand_path('../lib/code-box/version', __FILE__)
|
4
4
|
|
5
5
|
Gem::Specification.new do |gem|
|
6
|
-
gem.name =
|
6
|
+
gem.name = "code-box"
|
7
7
|
gem.version = CodeBox::VERSION
|
8
|
+
gem.license = "BSD-2-Clause"
|
8
9
|
|
9
10
|
gem.authors = ["Martin Schweizer"]
|
10
11
|
gem.email = ["contact@verticonaut.me"]
|
@@ -12,15 +13,15 @@ Gem::Specification.new do |gem|
|
|
12
13
|
gem.summary = %q{Specify attributes as code and provide lookup by I18n-, cache- or associated and support for building code classes.}
|
13
14
|
gem.homepage = %q{http://github.com/verticonaut/code-box}
|
14
15
|
|
15
|
-
gem.add_development_dependency "activerecord", "~>
|
16
|
+
gem.add_development_dependency "activerecord", "~> 7.0"
|
16
17
|
gem.add_development_dependency "sqlite3"
|
17
18
|
gem.add_development_dependency "rake"
|
18
19
|
gem.add_development_dependency "minitest"
|
20
|
+
gem.add_development_dependency "bigdecimal"
|
19
21
|
|
20
22
|
gem.files = `git ls-files`.split($\)
|
21
23
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
22
24
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
23
25
|
gem.require_paths = ["lib"]
|
24
|
-
gem.rdoc_options <<
|
26
|
+
gem.rdoc_options << "--charset" << "UTF-8" << "--line-numbers"
|
25
27
|
end
|
26
|
-
|
@@ -1,5 +1,4 @@
|
|
1
|
-
|
2
|
-
# encoding: utf-8
|
1
|
+
# frozen_string_literal: true
|
3
2
|
|
4
3
|
module CodeBox
|
5
4
|
|
@@ -34,8 +33,8 @@ module CodeBox
|
|
34
33
|
instance_eval <<-RUBY_
|
35
34
|
class << base
|
36
35
|
def _code_box_i18n_model_segment
|
37
|
-
return CodeBox.i18n_model_segment if "#{
|
38
|
-
"#{
|
36
|
+
return CodeBox.i18n_model_segment if "#{_code_box_i18n_model_segment}".empty?
|
37
|
+
"#{_code_box_i18n_model_segment}"
|
39
38
|
end
|
40
39
|
end
|
41
40
|
RUBY_
|
@@ -47,11 +46,11 @@ module CodeBox
|
|
47
46
|
|
48
47
|
module ClassMethods
|
49
48
|
DefaultOptions = {
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
49
|
+
code_attribute: "code",
|
50
|
+
sti: false,
|
51
|
+
uniqueness_case_sensitive: true,
|
52
|
+
position_attr: :position,
|
53
|
+
define_test_methods: true,
|
55
54
|
}
|
56
55
|
|
57
56
|
def acts_as_code(*codes_and_or_options)
|
@@ -63,7 +62,7 @@ module CodeBox
|
|
63
62
|
case_sensitive = opts[:uniqueness_case_sensitive]
|
64
63
|
define_test_methods = opts[:define_test_methods]
|
65
64
|
|
66
|
-
model_type =
|
65
|
+
model_type = ancestors.include?("ActiveRecord::Base".constantize) ? :active_record : :poro
|
67
66
|
|
68
67
|
class_eval <<-RUBY_
|
69
68
|
def translated_#{code_attr}(locale = I18n.locale, *options)
|
@@ -123,7 +122,7 @@ module CodeBox
|
|
123
122
|
# If starts with 'i18n.' it is considered an I18n key, else the label itself
|
124
123
|
options = translate_#{code_attr}(codes, build: :zip)
|
125
124
|
if include_empty
|
126
|
-
label = I18n.t(label[5..-1], locale: locale) if label.
|
125
|
+
label = I18n.t(label[5..-1], locale: locale) if label.start_with?('i18n.')
|
127
126
|
options.unshift [label, value]
|
128
127
|
end
|
129
128
|
|
@@ -138,7 +137,7 @@ module CodeBox
|
|
138
137
|
instance_eval <<-CODE
|
139
138
|
class << self
|
140
139
|
def _code_box_code_attr_name
|
141
|
-
|
140
|
+
code_attr.to_s
|
142
141
|
end
|
143
142
|
|
144
143
|
def code_cache
|
@@ -155,7 +154,7 @@ module CodeBox
|
|
155
154
|
when :active_record
|
156
155
|
|
157
156
|
order_expression = if self.attribute_names.include?(position_attr) then
|
158
|
-
"coalesce(#{position_attr
|
157
|
+
"coalesce(#{position_attr}, #{code_attr})"
|
159
158
|
else
|
160
159
|
code_attr.to_s
|
161
160
|
end
|
@@ -168,7 +167,7 @@ module CodeBox
|
|
168
167
|
CODE
|
169
168
|
|
170
169
|
when :poro
|
171
|
-
|
170
|
+
_order_attr = position_attr ? position_attr.to_s : code_attr.to_s
|
172
171
|
|
173
172
|
class_eval <<-CODE
|
174
173
|
attr_accessor :#{code_attr}
|
@@ -202,11 +201,11 @@ module CodeBox
|
|
202
201
|
|
203
202
|
def define_codes(*codes, define_test_methods)
|
204
203
|
# --- Define the code constants...
|
205
|
-
code_attr =
|
206
|
-
model_type =
|
204
|
+
code_attr = _code_box_code_attr_name
|
205
|
+
model_type = ancestors.include?("ActiveRecord::Base".constantize) ? :active_record : :poro
|
207
206
|
|
208
207
|
module_name = code_attr.pluralize.camelize
|
209
|
-
codes_module = const_set(module_name, Module.new)
|
208
|
+
codes_module = const_set(module_name, Module.new)
|
210
209
|
|
211
210
|
# Create a constant for each code
|
212
211
|
constants = {}
|
@@ -216,7 +215,7 @@ module CodeBox
|
|
216
215
|
constants[constant_name] = constant
|
217
216
|
end
|
218
217
|
|
219
|
-
codes_module.const_set(
|
218
|
+
codes_module.const_set("All", constants.values.compact)
|
220
219
|
|
221
220
|
|
222
221
|
# Define test methods for each code like e.g.
|
@@ -243,12 +242,12 @@ module CodeBox
|
|
243
242
|
|
244
243
|
constants = {}
|
245
244
|
codes.each do |code|
|
246
|
-
constant_name =
|
247
|
-
constant = const_set(constant_name,
|
245
|
+
constant_name = code.to_s.camelize
|
246
|
+
constant = const_set(constant_name, new(code.to_s))
|
248
247
|
constants[constant_name] = constant
|
249
248
|
end
|
250
249
|
|
251
|
-
const_set(
|
250
|
+
const_set("All", constants.values.compact)
|
252
251
|
|
253
252
|
class_eval <<-CODE
|
254
253
|
def self.all
|
@@ -69,7 +69,9 @@ module CodeBox
|
|
69
69
|
class_eval <<-RUBY_
|
70
70
|
# getter
|
71
71
|
def #{code_name}
|
72
|
-
|
72
|
+
code_value = #{code_attr_name}
|
73
|
+
return [] if code_value.nil?
|
74
|
+
codes = code_value.split(',').map(&:strip)
|
73
75
|
codes.map{ |code| #{code_class_name}.for_code(code) }
|
74
76
|
end
|
75
77
|
|
data/lib/code-box/version.rb
CHANGED
@@ -69,6 +69,7 @@ class TestActsAsCode < MiniTest::Unit::TestCase
|
|
69
69
|
|
70
70
|
def test_code_translation
|
71
71
|
code = Codes::CivilStatus.new('married')
|
72
|
+
I18n.locale = :en
|
72
73
|
|
73
74
|
assert_equal code.translated_code, 'married'
|
74
75
|
assert_equal code.translated_code(:de), 'verheiratet'
|
@@ -80,27 +81,27 @@ class TestActsAsCode < MiniTest::Unit::TestCase
|
|
80
81
|
|
81
82
|
options_array = Codes::CivilStatus.build_select_options(include_empty: true)
|
82
83
|
assert_equal options_array.size, 3
|
83
|
-
assert_equal options_array.first[1], nil
|
84
|
+
assert_equal options_array.first[1], nil
|
84
85
|
end
|
85
86
|
|
86
87
|
def test_options_building_with_text_label
|
87
88
|
options_array = Codes::CivilStatus.build_select_options(include_empty: { label: 'MyLabel' })
|
88
89
|
assert_equal options_array.size, 3
|
89
|
-
assert_equal options_array.first[0], 'MyLabel'
|
90
|
-
assert_equal options_array.first[1], nil
|
90
|
+
assert_equal options_array.first[0], 'MyLabel'
|
91
|
+
assert_equal options_array.first[1], nil
|
91
92
|
end
|
92
93
|
|
93
94
|
def test_options_building_with_custom_value
|
94
95
|
options_array = Codes::CivilStatus.build_select_options(include_empty: { value: 'all' })
|
95
96
|
assert_equal options_array.size, 3
|
96
|
-
assert_equal options_array.first[1], 'all'
|
97
|
+
assert_equal options_array.first[1], 'all'
|
97
98
|
end
|
98
99
|
|
99
100
|
def test_options_building_with_custom_label_and_value
|
100
101
|
options_array = Codes::CivilStatus.build_select_options(include_empty: { label: 'Yaiii', value: 'all' })
|
101
102
|
assert_equal options_array.size, 3
|
102
|
-
assert_equal options_array.first[0], 'Yaiii'
|
103
|
-
assert_equal options_array.first[1], 'all'
|
103
|
+
assert_equal options_array.first[0], 'Yaiii'
|
104
|
+
assert_equal options_array.first[1], 'all'
|
104
105
|
end
|
105
106
|
|
106
107
|
end
|
@@ -98,6 +98,8 @@ class TestCodeAttribute <MiniTest::Unit::TestCase
|
|
98
98
|
|
99
99
|
# :type => :associated ----------------------------------------------------------------
|
100
100
|
def test_code_attribute_lookup_associated
|
101
|
+
Codes::Country.delete_all
|
102
|
+
|
101
103
|
code_ch = Codes::Country.create(:code => 'CH', :name => 'Switzerland')
|
102
104
|
code_de = Codes::Country.create(:code => 'DE', :name => 'Germany')
|
103
105
|
|
data/test/helper.rb
CHANGED
@@ -8,14 +8,12 @@ require 'logger'
|
|
8
8
|
# Setup AR environment
|
9
9
|
# ------------------------------------------------------
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
:
|
15
|
-
:database => ':memory:'
|
11
|
+
ActiveRecord::Base.establish_connection(
|
12
|
+
{
|
13
|
+
adapter: "sqlite3",
|
14
|
+
database: ":memory:",
|
16
15
|
}
|
17
|
-
|
18
|
-
ActiveRecord::Base.establish_connection("test")
|
16
|
+
)
|
19
17
|
|
20
18
|
# Setup logger
|
21
19
|
tmp = File.expand_path('../../tmp', __FILE__)
|
data/test/resources/models.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# ------------------------------------------------------
|
2
4
|
# Defined the respective AR Models
|
3
5
|
# ------------------------------------------------------
|
4
6
|
module Codes
|
5
|
-
|
6
7
|
class SampleClass < ActiveRecord::Base
|
7
8
|
self.table_name = :codes_sample_class
|
8
9
|
|
@@ -10,23 +11,23 @@ module Codes
|
|
10
11
|
|
11
12
|
# i18n codes
|
12
13
|
code_attribute :gender
|
13
|
-
code_attribute :country, :
|
14
|
+
code_attribute :country, lookup_type: :i18n, code_attribute_suffix: "iso"
|
14
15
|
|
15
16
|
# lookup codes
|
16
|
-
code_attribute :civil_status, :
|
17
|
-
code_attribute :ager_type, :
|
17
|
+
code_attribute :civil_status, lookup_type: :lookup, class_name: "Codes::CivilStatus"
|
18
|
+
code_attribute :ager_type, lookup_type: :lookup, foreign_code_attribute: "code_id"
|
18
19
|
|
19
|
-
code_attribute :country_2, :
|
20
|
+
code_attribute :country_2, lookup_type: :associated, class_name: "Codes::Country"
|
20
21
|
|
21
|
-
code_attribute :countries, :
|
22
|
+
code_attribute :countries, lookup_type: :lookup, class_name: "Codes::Country", enum: :set
|
22
23
|
end
|
23
24
|
|
24
25
|
class CivilStatus
|
25
|
-
include CodeBox::ActsAsCode[
|
26
|
+
include CodeBox::ActsAsCode["single", "married", type: :poro]
|
26
27
|
end
|
27
28
|
|
28
29
|
class CivilStatusUseDefine
|
29
|
-
include CodeBox::ActsAsCode[:
|
30
|
+
include CodeBox::ActsAsCode[type: :poro]
|
30
31
|
|
31
32
|
define_codes(:single, :married)
|
32
33
|
end
|
@@ -53,23 +54,22 @@ module Codes
|
|
53
54
|
self.table_name = :codes_country
|
54
55
|
|
55
56
|
def self.for_code(code)
|
56
|
-
where(
|
57
|
+
where("code= ?", code).first
|
57
58
|
end
|
58
59
|
end
|
59
60
|
|
60
61
|
|
61
62
|
class ArCode < ActiveRecord::Base
|
62
63
|
self.table_name = :codes_ar_code
|
63
|
-
include CodeBox::ActsAsCode[:
|
64
|
+
include CodeBox::ActsAsCode[type: :active_record]
|
64
65
|
end
|
65
66
|
|
66
67
|
class SegmentModel
|
67
|
-
include CodeBox::CodeAttribute[:
|
68
|
+
include CodeBox::CodeAttribute[i18n_model_segment: :model]
|
68
69
|
|
69
70
|
attr_accessor :gender_code
|
70
71
|
|
71
72
|
# i18n codes
|
72
73
|
code_attribute :gender
|
73
74
|
end
|
74
|
-
|
75
75
|
end
|
metadata
CHANGED
@@ -1,78 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: code-box
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 2.0.pre1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Martin Schweizer
|
9
|
-
autorequire:
|
8
|
+
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2023-01-20 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: activerecord
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- - ~>
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
19
|
+
version: '7.0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- - ~>
|
24
|
+
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
26
|
+
version: '7.0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: sqlite3
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rake
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: minitest
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - ">="
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: bigdecimal
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
76
81
|
- !ruby/object:Gem::Version
|
77
82
|
version: '0'
|
78
83
|
description: Specify attributes as code and provide lookup by I18n-, cache- or associated
|
@@ -83,9 +88,9 @@ executables: []
|
|
83
88
|
extensions: []
|
84
89
|
extra_rdoc_files: []
|
85
90
|
files:
|
86
|
-
- .gitignore
|
87
|
-
- .ruby-version
|
88
|
-
- .travis.yml
|
91
|
+
- ".gitignore"
|
92
|
+
- ".ruby-version"
|
93
|
+
- ".travis.yml"
|
89
94
|
- Gemfile
|
90
95
|
- Gemfile.lock
|
91
96
|
- LICENSE
|
@@ -107,37 +112,30 @@ files:
|
|
107
112
|
- test/resources/models.rb
|
108
113
|
- test/resources/schema.rb
|
109
114
|
homepage: http://github.com/verticonaut/code-box
|
110
|
-
licenses:
|
111
|
-
|
115
|
+
licenses:
|
116
|
+
- BSD-2-Clause
|
117
|
+
metadata: {}
|
118
|
+
post_install_message:
|
112
119
|
rdoc_options:
|
113
|
-
- --charset
|
120
|
+
- "--charset"
|
114
121
|
- UTF-8
|
115
|
-
- --line-numbers
|
122
|
+
- "--line-numbers"
|
116
123
|
require_paths:
|
117
124
|
- lib
|
118
125
|
required_ruby_version: !ruby/object:Gem::Requirement
|
119
|
-
none: false
|
120
126
|
requirements:
|
121
|
-
- -
|
127
|
+
- - ">="
|
122
128
|
- !ruby/object:Gem::Version
|
123
129
|
version: '0'
|
124
|
-
segments:
|
125
|
-
- 0
|
126
|
-
hash: -2951990761497190642
|
127
130
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
|
-
none: false
|
129
131
|
requirements:
|
130
|
-
- -
|
132
|
+
- - ">"
|
131
133
|
- !ruby/object:Gem::Version
|
132
|
-
version:
|
133
|
-
segments:
|
134
|
-
- 0
|
135
|
-
hash: -2951990761497190642
|
134
|
+
version: 1.3.1
|
136
135
|
requirements: []
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
specification_version: 3
|
136
|
+
rubygems_version: 3.3.8
|
137
|
+
signing_key:
|
138
|
+
specification_version: 4
|
141
139
|
summary: Specify attributes as code and provide lookup by I18n-, cache- or associated
|
142
140
|
and support for building code classes.
|
143
141
|
test_files:
|