castkit 0.3.0 → 0.3.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 +4 -4
- data/CHANGELOG.md +39 -0
- data/README.md +11 -3
- data/castkit.gemspec +2 -0
- data/lib/castkit/attribute.rb +82 -59
- data/lib/castkit/attributes/definition.rb +64 -0
- data/lib/castkit/attributes/options.rb +214 -0
- data/lib/castkit/castkit.rb +13 -3
- data/lib/castkit/cli/generate.rb +14 -0
- data/lib/castkit/contract/base.rb +0 -12
- data/lib/castkit/contract/validator.rb +5 -1
- data/lib/castkit/core/attributes.rb +87 -44
- data/lib/castkit/data_object.rb +2 -25
- data/lib/castkit/{ext → dsl}/attribute/access.rb +1 -1
- data/lib/castkit/{ext → dsl}/attribute/error_handling.rb +1 -1
- data/lib/castkit/{ext → dsl}/attribute/options.rb +1 -1
- data/lib/castkit/{ext → dsl}/attribute/validation.rb +3 -3
- data/lib/castkit/dsl/attribute.rb +47 -0
- data/lib/castkit/{ext → dsl}/data_object/contract.rb +1 -1
- data/lib/castkit/{ext → dsl}/data_object/deserialization.rb +6 -2
- data/lib/castkit/{ext → dsl}/data_object/plugins.rb +1 -1
- data/lib/castkit/{ext → dsl}/data_object/serialization.rb +1 -1
- data/lib/castkit/dsl/data_object.rb +61 -0
- data/lib/castkit/types/base.rb +24 -3
- data/lib/castkit/validators/boolean_validator.rb +3 -3
- data/lib/castkit/version.rb +1 -1
- data/lib/castkit.rb +1 -4
- data/lib/generators/attribute.rb +39 -0
- data/lib/generators/templates/attribute.rb.tt +21 -0
- data/lib/generators/templates/attribute_spec.rb.tt +41 -0
- data/lib/generators/templates/contract.rb.tt +2 -0
- data/lib/generators/templates/data_object.rb.tt +2 -0
- data/lib/generators/templates/type.rb.tt +2 -0
- data/lib/generators/templates/validator.rb.tt +1 -1
- metadata +45 -12
- data/.rspec_status +0 -195
- data/lib/castkit/core/registerable.rb +0 -59
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "castkit/attributes/definition"
|
|
4
|
+
|
|
5
|
+
module Castkit
|
|
6
|
+
module Attributes
|
|
7
|
+
# Attribute definition for <%= config[:class_name] %>.
|
|
8
|
+
#
|
|
9
|
+
# This definition can be reused across DataObjects to avoid repeating shared options.
|
|
10
|
+
#
|
|
11
|
+
# @example
|
|
12
|
+
# class UserDto < Castkit::DataObject
|
|
13
|
+
# include Castkit::Attributes
|
|
14
|
+
#
|
|
15
|
+
# attribute :name, using: <%= config[:class_name] %>
|
|
16
|
+
# end
|
|
17
|
+
class <%= config[:class_name] %> < Castkit::Attributes::Definition
|
|
18
|
+
<% if config[:type].empty? %># type :string<% else %>type :<%= config[:type] %><% end %>
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "spec_helper"
|
|
4
|
+
require "castkit/attributes/<%= config[:name] %>"
|
|
5
|
+
|
|
6
|
+
RSpec.describe Castkit::Attributes::<%= config[:class_name] %> do
|
|
7
|
+
subject(:attribute) { described_class }
|
|
8
|
+
|
|
9
|
+
let(:type) { attribute.definition[:type] }
|
|
10
|
+
let(:options) { attribute.definition[:options] }
|
|
11
|
+
|
|
12
|
+
describe ".definition" do
|
|
13
|
+
it "returns a valid definition" do
|
|
14
|
+
expect(type).to be_a(Symbol).or be_a(Class)
|
|
15
|
+
expect(options).to be_a(Hash)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe "defined type" do
|
|
20
|
+
it "returns defined type" do
|
|
21
|
+
expect(type).to eq(:<%= config[:type] %>)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe "defined options" do
|
|
26
|
+
it "includes expected keys" do
|
|
27
|
+
expect(options.keys).to all(be_a(Symbol))
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "includes known default keys" do
|
|
31
|
+
expect(options.keys).to include(:required, :access)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
describe "DSL behavior" do
|
|
36
|
+
it "overrides required and access values" do
|
|
37
|
+
expect(options[:required]).to be(true)
|
|
38
|
+
expect(options[:access]).to eq(%i[read write])
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: castkit
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3.
|
|
4
|
+
version: 0.3.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nathan Lucas
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2025-
|
|
11
|
+
date: 2025-12-09 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: thor
|
|
@@ -52,6 +52,34 @@ dependencies:
|
|
|
52
52
|
- - ">="
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
54
|
version: '0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: simplecov
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - ">="
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: simplecov-cobertura
|
|
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
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
55
83
|
- !ruby/object:Gem::Dependency
|
|
56
84
|
name: yard
|
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -76,7 +104,6 @@ extensions: []
|
|
|
76
104
|
extra_rdoc_files: []
|
|
77
105
|
files:
|
|
78
106
|
- ".rspec"
|
|
79
|
-
- ".rspec_status"
|
|
80
107
|
- ".rubocop.yml"
|
|
81
108
|
- CHANGELOG.md
|
|
82
109
|
- CODE_OF_CONDUCT.md
|
|
@@ -86,6 +113,8 @@ files:
|
|
|
86
113
|
- castkit.gemspec
|
|
87
114
|
- lib/castkit.rb
|
|
88
115
|
- lib/castkit/attribute.rb
|
|
116
|
+
- lib/castkit/attributes/definition.rb
|
|
117
|
+
- lib/castkit/attributes/options.rb
|
|
89
118
|
- lib/castkit/castkit.rb
|
|
90
119
|
- lib/castkit/cli.rb
|
|
91
120
|
- lib/castkit/cli/generate.rb
|
|
@@ -100,17 +129,18 @@ files:
|
|
|
100
129
|
- lib/castkit/core/attribute_types.rb
|
|
101
130
|
- lib/castkit/core/attributes.rb
|
|
102
131
|
- lib/castkit/core/config.rb
|
|
103
|
-
- lib/castkit/core/registerable.rb
|
|
104
132
|
- lib/castkit/data_object.rb
|
|
133
|
+
- lib/castkit/dsl/attribute.rb
|
|
134
|
+
- lib/castkit/dsl/attribute/access.rb
|
|
135
|
+
- lib/castkit/dsl/attribute/error_handling.rb
|
|
136
|
+
- lib/castkit/dsl/attribute/options.rb
|
|
137
|
+
- lib/castkit/dsl/attribute/validation.rb
|
|
138
|
+
- lib/castkit/dsl/data_object.rb
|
|
139
|
+
- lib/castkit/dsl/data_object/contract.rb
|
|
140
|
+
- lib/castkit/dsl/data_object/deserialization.rb
|
|
141
|
+
- lib/castkit/dsl/data_object/plugins.rb
|
|
142
|
+
- lib/castkit/dsl/data_object/serialization.rb
|
|
105
143
|
- lib/castkit/error.rb
|
|
106
|
-
- lib/castkit/ext/attribute/access.rb
|
|
107
|
-
- lib/castkit/ext/attribute/error_handling.rb
|
|
108
|
-
- lib/castkit/ext/attribute/options.rb
|
|
109
|
-
- lib/castkit/ext/attribute/validation.rb
|
|
110
|
-
- lib/castkit/ext/data_object/contract.rb
|
|
111
|
-
- lib/castkit/ext/data_object/deserialization.rb
|
|
112
|
-
- lib/castkit/ext/data_object/plugins.rb
|
|
113
|
-
- lib/castkit/ext/data_object/serialization.rb
|
|
114
144
|
- lib/castkit/inflector.rb
|
|
115
145
|
- lib/castkit/plugins.rb
|
|
116
146
|
- lib/castkit/serializers/base.rb
|
|
@@ -133,11 +163,14 @@ files:
|
|
|
133
163
|
- lib/castkit/validators/numeric_validator.rb
|
|
134
164
|
- lib/castkit/validators/string_validator.rb
|
|
135
165
|
- lib/castkit/version.rb
|
|
166
|
+
- lib/generators/attribute.rb
|
|
136
167
|
- lib/generators/base.rb
|
|
137
168
|
- lib/generators/contract.rb
|
|
138
169
|
- lib/generators/data_object.rb
|
|
139
170
|
- lib/generators/plugin.rb
|
|
140
171
|
- lib/generators/serializer.rb
|
|
172
|
+
- lib/generators/templates/attribute.rb.tt
|
|
173
|
+
- lib/generators/templates/attribute_spec.rb.tt
|
|
141
174
|
- lib/generators/templates/contract.rb.tt
|
|
142
175
|
- lib/generators/templates/contract_spec.rb.tt
|
|
143
176
|
- lib/generators/templates/data_object.rb.tt
|
data/.rspec_status
DELETED
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
example_id | status | run_time |
|
|
2
|
-
------------------------------------------------------------- | ------ | --------------- |
|
|
3
|
-
./spec/castkit/attribute_spec.rb[1:1:1] | passed | 0.00045 seconds |
|
|
4
|
-
./spec/castkit/attribute_spec.rb[1:1:2] | passed | 0.00004 seconds |
|
|
5
|
-
./spec/castkit/attribute_spec.rb[1:1:3] | passed | 0.00004 seconds |
|
|
6
|
-
./spec/castkit/attribute_spec.rb[1:1:4] | passed | 0.00003 seconds |
|
|
7
|
-
./spec/castkit/attribute_spec.rb[1:2:1] | passed | 0.00096 seconds |
|
|
8
|
-
./spec/castkit/attribute_spec.rb[1:3:1] | passed | 0.00004 seconds |
|
|
9
|
-
./spec/castkit/attribute_spec.rb[1:3:2] | passed | 0.00004 seconds |
|
|
10
|
-
./spec/castkit/attribute_spec.rb[1:3:3] | passed | 0.00003 seconds |
|
|
11
|
-
./spec/castkit/attribute_spec.rb[1:3:4] | passed | 0.00079 seconds |
|
|
12
|
-
./spec/castkit/base_spec.rb[1:1:1] | passed | 0.00007 seconds |
|
|
13
|
-
./spec/castkit/base_spec.rb[1:2:1] | passed | 0.00365 seconds |
|
|
14
|
-
./spec/castkit/base_spec.rb[1:3:1] | passed | 0.00009 seconds |
|
|
15
|
-
./spec/castkit/base_spec.rb[1:3:2] | passed | 0.00006 seconds |
|
|
16
|
-
./spec/castkit/base_spec.rb[1:4:1] | passed | 0.00005 seconds |
|
|
17
|
-
./spec/castkit/contract/validator_spec.rb[1:1:1:1] | passed | 0.00008 seconds |
|
|
18
|
-
./spec/castkit/contract/validator_spec.rb[1:1:2:1] | passed | 0.00038 seconds |
|
|
19
|
-
./spec/castkit/contract/validator_spec.rb[1:1:3:1] | passed | 0.00007 seconds |
|
|
20
|
-
./spec/castkit/contract/validator_spec.rb[1:1:4:1] | passed | 0.00009 seconds |
|
|
21
|
-
./spec/castkit/contract/validator_spec.rb[1:1:5:1] | passed | 0.00008 seconds |
|
|
22
|
-
./spec/castkit/contract_spec.rb[1:1:1] | passed | 0.0003 seconds |
|
|
23
|
-
./spec/castkit/contract_spec.rb[1:1:2] | passed | 0.001 seconds |
|
|
24
|
-
./spec/castkit/contract_spec.rb[1:1:3] | passed | 0.00008 seconds |
|
|
25
|
-
./spec/castkit/contract_spec.rb[1:1:4] | passed | 0.00006 seconds |
|
|
26
|
-
./spec/castkit/contract_spec.rb[1:1:5] | passed | 0.00006 seconds |
|
|
27
|
-
./spec/castkit/contract_spec.rb[1:1:6] | passed | 0.00006 seconds |
|
|
28
|
-
./spec/castkit/core/attribute_types_spec.rb[1:1:1] | passed | 0.00005 seconds |
|
|
29
|
-
./spec/castkit/core/attribute_types_spec.rb[1:1:2] | passed | 0.00003 seconds |
|
|
30
|
-
./spec/castkit/core/attribute_types_spec.rb[1:1:3] | passed | 0.00003 seconds |
|
|
31
|
-
./spec/castkit/core/attribute_types_spec.rb[1:1:4] | passed | 0.00003 seconds |
|
|
32
|
-
./spec/castkit/core/attribute_types_spec.rb[1:1:5] | passed | 0.00003 seconds |
|
|
33
|
-
./spec/castkit/core/attribute_types_spec.rb[1:1:6] | passed | 0.00003 seconds |
|
|
34
|
-
./spec/castkit/core/attribute_types_spec.rb[1:1:7] | passed | 0.00003 seconds |
|
|
35
|
-
./spec/castkit/core/attribute_types_spec.rb[1:1:8] | passed | 0.00006 seconds |
|
|
36
|
-
./spec/castkit/core/attribute_types_spec.rb[1:1:9] | passed | 0.00004 seconds |
|
|
37
|
-
./spec/castkit/core/attribute_types_spec.rb[1:1:10] | passed | 0.00005 seconds |
|
|
38
|
-
./spec/castkit/core/attribute_types_spec.rb[1:1:11] | passed | 0.00003 seconds |
|
|
39
|
-
./spec/castkit/core/attribute_types_spec.rb[1:1:12] | passed | 0.00003 seconds |
|
|
40
|
-
./spec/castkit/core/attributes_spec.rb[1:1:1] | passed | 0.00005 seconds |
|
|
41
|
-
./spec/castkit/core/attributes_spec.rb[1:1:2] | passed | 0.00005 seconds |
|
|
42
|
-
./spec/castkit/core/attributes_spec.rb[1:1:3] | passed | 0.00005 seconds |
|
|
43
|
-
./spec/castkit/core/attributes_spec.rb[1:2:1] | passed | 0.00004 seconds |
|
|
44
|
-
./spec/castkit/core/attributes_spec.rb[1:3:1] | passed | 0.00005 seconds |
|
|
45
|
-
./spec/castkit/core/attributes_spec.rb[1:4:1] | passed | 0.00056 seconds |
|
|
46
|
-
./spec/castkit/core/attributes_spec.rb[1:5:1] | passed | 0.00005 seconds |
|
|
47
|
-
./spec/castkit/core/attributes_spec.rb[1:6:1] | passed | 0.00028 seconds |
|
|
48
|
-
./spec/castkit/core/attributes_spec.rb[1:7:1] | passed | 0.00005 seconds |
|
|
49
|
-
./spec/castkit/core/config_spec.rb[1:1:1] | passed | 0.00003 seconds |
|
|
50
|
-
./spec/castkit/core/config_spec.rb[1:1:2] | passed | 0.00003 seconds |
|
|
51
|
-
./spec/castkit/core/config_spec.rb[1:2:1] | passed | 0.00003 seconds |
|
|
52
|
-
./spec/castkit/core/config_spec.rb[1:3:1] | passed | 0.00003 seconds |
|
|
53
|
-
./spec/castkit/core/config_spec.rb[1:3:2] | passed | 0.00003 seconds |
|
|
54
|
-
./spec/castkit/core/config_spec.rb[1:4:1] | passed | 0.00003 seconds |
|
|
55
|
-
./spec/castkit/core/config_spec.rb[1:4:2] | passed | 0.00003 seconds |
|
|
56
|
-
./spec/castkit/core/config_spec.rb[1:5:1] | passed | 0.00004 seconds |
|
|
57
|
-
./spec/castkit/core/config_spec.rb[1:5:2] | passed | 0.00003 seconds |
|
|
58
|
-
./spec/castkit/data_object_spec.rb[1:1:1] | passed | 0.00094 seconds |
|
|
59
|
-
./spec/castkit/data_object_spec.rb[1:1:2] | passed | 0.00022 seconds |
|
|
60
|
-
./spec/castkit/data_object_spec.rb[1:2:1] | passed | 0.00014 seconds |
|
|
61
|
-
./spec/castkit/data_object_spec.rb[1:2:2] | passed | 0.00174 seconds |
|
|
62
|
-
./spec/castkit/data_object_spec.rb[1:2:3] | passed | 0.0001 seconds |
|
|
63
|
-
./spec/castkit/data_object_spec.rb[1:3:1] | passed | 0.00008 seconds |
|
|
64
|
-
./spec/castkit/data_object_spec.rb[1:3:2] | passed | 0.00008 seconds |
|
|
65
|
-
./spec/castkit/data_object_spec.rb[1:4:1] | passed | 0.00021 seconds |
|
|
66
|
-
./spec/castkit/data_object_spec.rb[1:5:1] | passed | 0.00013 seconds |
|
|
67
|
-
./spec/castkit/data_object_spec.rb[1:5:2] | passed | 0.0001 seconds |
|
|
68
|
-
./spec/castkit/data_object_spec.rb[1:5:3] | passed | 0.00012 seconds |
|
|
69
|
-
./spec/castkit/data_object_spec.rb[1:5:4] | passed | 0.0001 seconds |
|
|
70
|
-
./spec/castkit/data_object_spec.rb[1:5:5] | passed | 0.00073 seconds |
|
|
71
|
-
./spec/castkit/data_object_spec.rb[1:5:6] | passed | 0.00015 seconds |
|
|
72
|
-
./spec/castkit/data_object_spec.rb[1:5:7] | passed | 0.00011 seconds |
|
|
73
|
-
./spec/castkit/data_object_spec.rb[1:6:1] | passed | 0.0001 seconds |
|
|
74
|
-
./spec/castkit/data_object_spec.rb[1:7:1] | passed | 0.0001 seconds |
|
|
75
|
-
./spec/castkit/data_object_spec.rb[1:8:1] | passed | 0.00021 seconds |
|
|
76
|
-
./spec/castkit/data_object_spec.rb[1:8:2] | passed | 0.00011 seconds |
|
|
77
|
-
./spec/castkit/data_object_spec.rb[1:9:1] | passed | 0.00011 seconds |
|
|
78
|
-
./spec/castkit/default_serializer_spec.rb[1:1:1] | passed | 0.00011 seconds |
|
|
79
|
-
./spec/castkit/default_serializer_spec.rb[1:2:1] | passed | 0.00023 seconds |
|
|
80
|
-
./spec/castkit/default_serializer_spec.rb[1:2:2] | passed | 0.00008 seconds |
|
|
81
|
-
./spec/castkit/default_serializer_spec.rb[1:2:3] | passed | 0.00016 seconds |
|
|
82
|
-
./spec/castkit/default_serializer_spec.rb[1:3:1] | passed | 0.00019 seconds |
|
|
83
|
-
./spec/castkit/default_serializer_spec.rb[1:3:2] | passed | 0.00027 seconds |
|
|
84
|
-
./spec/castkit/default_serializer_spec.rb[1:3:3] | passed | 0.00016 seconds |
|
|
85
|
-
./spec/castkit/default_serializer_spec.rb[1:3:4] | passed | 0.00012 seconds |
|
|
86
|
-
./spec/castkit/default_serializer_spec.rb[1:4:1] | passed | 0.00008 seconds |
|
|
87
|
-
./spec/castkit/default_serializer_spec.rb[1:5:1] | passed | 0.00007 seconds |
|
|
88
|
-
./spec/castkit/default_serializer_spec.rb[1:5:2] | passed | 0.00006 seconds |
|
|
89
|
-
./spec/castkit/default_serializer_spec.rb[1:5:3] | passed | 0.00006 seconds |
|
|
90
|
-
./spec/castkit/ext/attribute/access_spec.rb[1:1:1] | passed | 0.00004 seconds |
|
|
91
|
-
./spec/castkit/ext/attribute/access_spec.rb[1:1:2:1] | passed | 0.00011 seconds |
|
|
92
|
-
./spec/castkit/ext/attribute/access_spec.rb[1:1:3:1] | passed | 0.00003 seconds |
|
|
93
|
-
./spec/castkit/ext/attribute/access_spec.rb[1:1:4:1] | passed | 0.00003 seconds |
|
|
94
|
-
./spec/castkit/ext/attribute/access_spec.rb[1:2:1:1] | passed | 0.00004 seconds |
|
|
95
|
-
./spec/castkit/ext/attribute/access_spec.rb[1:2:2:1] | passed | 0.00004 seconds |
|
|
96
|
-
./spec/castkit/ext/attribute/access_spec.rb[1:2:3:1] | passed | 0.00004 seconds |
|
|
97
|
-
./spec/castkit/ext/attribute/access_spec.rb[1:3:1] | passed | 0.00003 seconds |
|
|
98
|
-
./spec/castkit/ext/attribute/access_spec.rb[1:3:2] | passed | 0.00009 seconds |
|
|
99
|
-
./spec/castkit/ext/attribute/access_spec.rb[1:3:3] | passed | 0.00004 seconds |
|
|
100
|
-
./spec/castkit/ext/attribute/access_spec.rb[1:3:4] | passed | 0.00003 seconds |
|
|
101
|
-
./spec/castkit/ext/attribute/access_spec.rb[1:3:5] | passed | 0.00003 seconds |
|
|
102
|
-
./spec/castkit/ext/attribute/access_spec.rb[1:4:1:1] | passed | 0.00005 seconds |
|
|
103
|
-
./spec/castkit/ext/attribute/access_spec.rb[1:4:2:1] | passed | 0.00004 seconds |
|
|
104
|
-
./spec/castkit/ext/attribute/access_spec.rb[1:4:3:1] | passed | 0.00004 seconds |
|
|
105
|
-
./spec/castkit/ext/attribute/access_spec.rb[1:5:1] | passed | 0.00004 seconds |
|
|
106
|
-
./spec/castkit/ext/attribute/access_spec.rb[1:5:2] | passed | 0.00003 seconds |
|
|
107
|
-
./spec/castkit/ext/attribute/access_spec.rb[1:5:3] | passed | 0.00003 seconds |
|
|
108
|
-
./spec/castkit/ext/attribute/access_spec.rb[1:6:1:1] | passed | 0.00003 seconds |
|
|
109
|
-
./spec/castkit/ext/attribute/access_spec.rb[1:6:2:1] | passed | 0.00003 seconds |
|
|
110
|
-
./spec/castkit/ext/attribute/access_spec.rb[1:6:3:1] | passed | 0.00003 seconds |
|
|
111
|
-
./spec/castkit/ext/attribute/access_spec.rb[1:7:1:1] | passed | 0.00003 seconds |
|
|
112
|
-
./spec/castkit/ext/attribute/access_spec.rb[1:7:2:1] | passed | 0.00003 seconds |
|
|
113
|
-
./spec/castkit/ext/attribute/options_spec.rb[1:1:1:1] | passed | 0.00005 seconds |
|
|
114
|
-
./spec/castkit/ext/attribute/options_spec.rb[1:1:2:1] | passed | 0.00004 seconds |
|
|
115
|
-
./spec/castkit/ext/attribute/options_spec.rb[1:2:1:1] | passed | 0.00004 seconds |
|
|
116
|
-
./spec/castkit/ext/attribute/options_spec.rb[1:2:2:1] | passed | 0.00011 seconds |
|
|
117
|
-
./spec/castkit/ext/attribute/options_spec.rb[1:3:1:1] | passed | 0.00004 seconds |
|
|
118
|
-
./spec/castkit/ext/attribute/options_spec.rb[1:3:2:1] | passed | 0.00004 seconds |
|
|
119
|
-
./spec/castkit/ext/attribute/options_spec.rb[1:3:3:1] | passed | 0.00004 seconds |
|
|
120
|
-
./spec/castkit/ext/attribute/options_spec.rb[1:4:1] | passed | 0.00004 seconds |
|
|
121
|
-
./spec/castkit/ext/attribute/options_spec.rb[1:5:1] | passed | 0.00003 seconds |
|
|
122
|
-
./spec/castkit/ext/attribute/options_spec.rb[1:5:2:1] | passed | 0.00004 seconds |
|
|
123
|
-
./spec/castkit/ext/attribute/options_spec.rb[1:6:1] | passed | 0.00009 seconds |
|
|
124
|
-
./spec/castkit/ext/attribute/options_spec.rb[1:7:1] | passed | 0.00004 seconds |
|
|
125
|
-
./spec/castkit/ext/attribute/options_spec.rb[1:7:2:1] | passed | 0.00004 seconds |
|
|
126
|
-
./spec/castkit/ext/attribute/options_spec.rb[1:8:1] | passed | 0.00003 seconds |
|
|
127
|
-
./spec/castkit/ext/attribute/options_spec.rb[1:8:2:1] | passed | 0.00004 seconds |
|
|
128
|
-
./spec/castkit/ext/attribute/options_spec.rb[1:9:1:1] | passed | 0.00006 seconds |
|
|
129
|
-
./spec/castkit/ext/attribute/options_spec.rb[1:9:2:1] | passed | 0.00004 seconds |
|
|
130
|
-
./spec/castkit/ext/attribute/options_spec.rb[1:9:3:1] | passed | 0.00004 seconds |
|
|
131
|
-
./spec/castkit/ext/attribute/options_spec.rb[1:10:1:1] | passed | 0.00004 seconds |
|
|
132
|
-
./spec/castkit/ext/attribute/options_spec.rb[1:10:2:1] | passed | 0.00004 seconds |
|
|
133
|
-
./spec/castkit/ext/attribute/options_spec.rb[1:11:1:1] | passed | 0.00004 seconds |
|
|
134
|
-
./spec/castkit/ext/attribute/options_spec.rb[1:11:2:1] | passed | 0.00004 seconds |
|
|
135
|
-
./spec/castkit/ext/attribute/options_spec.rb[1:12:1:1] | passed | 0.00004 seconds |
|
|
136
|
-
./spec/castkit/ext/attribute/options_spec.rb[1:12:2:1] | passed | 0.00004 seconds |
|
|
137
|
-
./spec/castkit/ext/attribute/validation_spec.rb[1:1:1:1] | passed | 0.00012 seconds |
|
|
138
|
-
./spec/castkit/ext/attribute/validation_spec.rb[1:1:2:1:1] | passed | 0.00017 seconds |
|
|
139
|
-
./spec/castkit/ext/attribute/validation_spec.rb[1:1:2:2:1] | passed | 0.00014 seconds |
|
|
140
|
-
./spec/castkit/ext/attribute/validation_spec.rb[1:1:3:1] | passed | 0.00007 seconds |
|
|
141
|
-
./spec/castkit/ext/attribute/validation_spec.rb[1:1:4:1:1] | passed | 0.00008 seconds |
|
|
142
|
-
./spec/castkit/ext/attribute/validation_spec.rb[1:1:4:2:1] | passed | 0.00018 seconds |
|
|
143
|
-
./spec/castkit/ext/attribute/validation_spec.rb[1:1:5:1:1] | passed | 0.00008 seconds |
|
|
144
|
-
./spec/castkit/ext/attribute/validation_spec.rb[1:1:5:2:1] | passed | 0.00011 seconds |
|
|
145
|
-
./spec/castkit/ext/data_object/deserialization_spec.rb[1:1:1] | passed | 0.00015 seconds |
|
|
146
|
-
./spec/castkit/ext/data_object/deserialization_spec.rb[1:2:1] | passed | 0.00006 seconds |
|
|
147
|
-
./spec/castkit/ext/data_object/deserialization_spec.rb[1:2:2] | passed | 0.00005 seconds |
|
|
148
|
-
./spec/castkit/ext/data_object/deserialization_spec.rb[1:3:1] | passed | 0.00014 seconds |
|
|
149
|
-
./spec/castkit/ext/data_object/deserialization_spec.rb[1:4:1] | passed | 0.00006 seconds |
|
|
150
|
-
./spec/castkit/ext/data_object/serialization_spec.rb[1:1:1] | passed | 0.00003 seconds |
|
|
151
|
-
./spec/castkit/ext/data_object/serialization_spec.rb[1:1:2] | passed | 0.00003 seconds |
|
|
152
|
-
./spec/castkit/ext/data_object/serialization_spec.rb[1:2:1] | passed | 0.00003 seconds |
|
|
153
|
-
./spec/castkit/ext/data_object/serialization_spec.rb[1:2:2] | passed | 0.00003 seconds |
|
|
154
|
-
./spec/castkit/ext/data_object/serialization_spec.rb[1:3:1] | passed | 0.00004 seconds |
|
|
155
|
-
./spec/castkit/ext/data_object/serialization_spec.rb[1:4:1] | passed | 0.00004 seconds |
|
|
156
|
-
./spec/castkit/ext/data_object/serialization_spec.rb[1:4:2] | passed | 0.00003 seconds |
|
|
157
|
-
./spec/castkit/validators/numeric_validator_spec.rb[1:1:1:1] | passed | 0.00004 seconds |
|
|
158
|
-
./spec/castkit/validators/numeric_validator_spec.rb[1:1:2:1] | passed | 0.00004 seconds |
|
|
159
|
-
./spec/castkit/validators/numeric_validator_spec.rb[1:1:3:1] | passed | 0.00003 seconds |
|
|
160
|
-
./spec/castkit/validators/numeric_validator_spec.rb[1:1:4:1] | passed | 0.00003 seconds |
|
|
161
|
-
./spec/castkit/validators/string_validator_spec.rb[1:1:1:1:1] | passed | 0.00003 seconds |
|
|
162
|
-
./spec/castkit/validators/string_validator_spec.rb[1:1:2:1] | passed | 0.00004 seconds |
|
|
163
|
-
./spec/castkit/validators/string_validator_spec.rb[1:1:2:2] | passed | 0.00027 seconds |
|
|
164
|
-
./spec/castkit/validators/string_validator_spec.rb[1:1:3:1] | passed | 0.00007 seconds |
|
|
165
|
-
./spec/castkit/validators/string_validator_spec.rb[1:1:3:2] | passed | 0.00004 seconds |
|
|
166
|
-
./spec/castkit/validators/string_validator_spec.rb[1:1:4:1] | passed | 0.00006 seconds |
|
|
167
|
-
./spec/castkit/validators/validator_spec.rb[1:1:1] | passed | 0.00004 seconds |
|
|
168
|
-
./spec/castkit/validators/validator_spec.rb[1:2:1] | passed | 0.00004 seconds |
|
|
169
|
-
./spec/castkit_spec.rb[1:1] | passed | 0.00003 seconds |
|
|
170
|
-
./spec/castkit_spec.rb[1:2:1:1] | passed | 0.00015 seconds |
|
|
171
|
-
./spec/castkit_spec.rb[1:2:1:2] | passed | 0.00008 seconds |
|
|
172
|
-
./spec/castkit_spec.rb[1:2:1:3] | passed | 0.00012 seconds |
|
|
173
|
-
./spec/castkit_spec.rb[1:2:1:4] | passed | 0.00017 seconds |
|
|
174
|
-
./spec/castkit_spec.rb[1:2:2:1] | passed | 0.00013 seconds |
|
|
175
|
-
./spec/castkit_spec.rb[1:2:2:2] | passed | 0.00009 seconds |
|
|
176
|
-
./spec/castkit_spec.rb[1:2:2:3] | passed | 0.00007 seconds |
|
|
177
|
-
./spec/castkit_spec.rb[1:2:3:1] | passed | 0.0001 seconds |
|
|
178
|
-
./spec/castkit_spec.rb[1:2:3:2] | passed | 0.00007 seconds |
|
|
179
|
-
./spec/castkit_spec.rb[1:2:3:3] | passed | 0.00005 seconds |
|
|
180
|
-
./spec/castkit_spec.rb[1:2:4:1] | passed | 0.00372 seconds |
|
|
181
|
-
./spec/castkit_spec.rb[1:3:1] | passed | 0.00324 seconds |
|
|
182
|
-
./spec/castkit_spec.rb[1:3:2] | passed | 0.00333 seconds |
|
|
183
|
-
./spec/castkit_spec.rb[1:3:3] | passed | 0.00022 seconds |
|
|
184
|
-
./spec/castkit_spec.rb[1:3:4] | passed | 0.00022 seconds |
|
|
185
|
-
./spec/castkit_spec.rb[1:3:5] | passed | 0.00013 seconds |
|
|
186
|
-
./spec/castkit_spec.rb[1:3:6] | passed | 0.00017 seconds |
|
|
187
|
-
./spec/castkit_spec.rb[1:3:7] | passed | 0.00023 seconds |
|
|
188
|
-
./spec/castkit_spec.rb[1:3:8] | passed | 0.0002 seconds |
|
|
189
|
-
./spec/configuration_spec.rb[1:1:1] | passed | 0.00008 seconds |
|
|
190
|
-
./spec/configuration_spec.rb[1:2:1] | passed | 0.00005 seconds |
|
|
191
|
-
./spec/configuration_spec.rb[1:3:1] | passed | 0.00005 seconds |
|
|
192
|
-
./spec/configuration_spec.rb[1:3:2] | passed | 0.00004 seconds |
|
|
193
|
-
./spec/configuration_spec.rb[1:3:3] | passed | 0.00004 seconds |
|
|
194
|
-
./spec/configuration_spec.rb[1:3:4] | passed | 0.00006 seconds |
|
|
195
|
-
./spec/configuration_spec.rb[1:4:1] | passed | 0.00006 seconds |
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative "../castkit"
|
|
4
|
-
|
|
5
|
-
module Castkit
|
|
6
|
-
module Core
|
|
7
|
-
# Provides methods to register dynamically generated contracts and data objects
|
|
8
|
-
# into the appropriate Castkit namespaces (`Castkit::Contracts`, `Castkit::DataObjects`).
|
|
9
|
-
#
|
|
10
|
-
# This is useful when working with ephemeral classes (e.g., from `Contract.build` or
|
|
11
|
-
# `.to_dataobject`) that should be persisted and referenced as constants.
|
|
12
|
-
#
|
|
13
|
-
# @example Registering a contract class
|
|
14
|
-
# contract = Castkit::Contract.build(:user) { string :id }
|
|
15
|
-
# contract.extend(Castkit::Core::Registerable)
|
|
16
|
-
# contract.register! # => Castkit::Contracts::User
|
|
17
|
-
#
|
|
18
|
-
# @example Registering a DTO
|
|
19
|
-
# dto = contract.to_dataobject
|
|
20
|
-
# dto.extend(Castkit::Core::Registerable)
|
|
21
|
-
# dto.register!(as: :UserDto) # => Castkit::DataObjects::UserDto
|
|
22
|
-
module Registerable
|
|
23
|
-
CASTKIT_NAMESPACES = {
|
|
24
|
-
contracts: Castkit::Contracts,
|
|
25
|
-
dataobjects: Castkit::DataObjects
|
|
26
|
-
}.freeze
|
|
27
|
-
|
|
28
|
-
# Registers the current class in the specified Castkit namespace.
|
|
29
|
-
#
|
|
30
|
-
# @param namespace [Symbol] `:contracts` or `:dataobjects`
|
|
31
|
-
# @param as [String, Symbol, nil] Optional constant name override (PascalCase).
|
|
32
|
-
# If not provided, falls back to the class's name (via `Inflector.pascalize(self.name)`).
|
|
33
|
-
#
|
|
34
|
-
# @raise [Castkit::Error] if class is anonymous or name already exists in the namespace
|
|
35
|
-
# @return [Class] the registered class
|
|
36
|
-
def register!(namespace:, as: nil)
|
|
37
|
-
name = Castkit::Inflector.pascalize(as || self.name)
|
|
38
|
-
raise Castkit::Error, "Unable to register anonymous classes, use as: ClassName" if name.nil?
|
|
39
|
-
|
|
40
|
-
ns = Castkit.const_get(namespace.to_s.capitalize, false)
|
|
41
|
-
raise Castkit::Error, "#{name} is already registered in #{ns}" if defined_in_namespace?(ns, name)
|
|
42
|
-
|
|
43
|
-
ns.const_set(name, self)
|
|
44
|
-
self
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
private
|
|
48
|
-
|
|
49
|
-
# Checks whether a constant is already defined in the given namespace.
|
|
50
|
-
#
|
|
51
|
-
# @param namespace [Module] target module (e.g., `Castkit::Contracts`)
|
|
52
|
-
# @param name [String, Symbol]
|
|
53
|
-
# @return [Boolean]
|
|
54
|
-
def defined_in_namespace?(namespace, name)
|
|
55
|
-
namespace.const_defined?(name.to_s.to_sym, false)
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|