easy_talk 1.0.3 → 2.0.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.
metadata CHANGED
@@ -1,196 +1,56 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy_talk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergio Bayona
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-03-11 00:00:00.000000000 Z
10
+ date: 2025-06-05 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: activemodel
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
- - - ">="
16
+ - - "~>"
17
17
  - !ruby/object:Gem::Version
18
18
  version: '7.0'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
- - - ">="
23
+ - - "~>"
24
24
  - !ruby/object:Gem::Version
25
25
  version: '7.0'
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: activesupport
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
- - - ">="
30
+ - - "~>"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '7.0'
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - ">="
37
+ - - "~>"
38
38
  - !ruby/object:Gem::Version
39
39
  version: '7.0'
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: sorbet-runtime
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - ">="
44
+ - - "~>"
45
45
  - !ruby/object:Gem::Version
46
46
  version: '0.5'
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - ">="
51
+ - - "~>"
52
52
  - !ruby/object:Gem::Version
53
53
  version: '0.5'
54
- - !ruby/object:Gem::Dependency
55
- name: activerecord
56
- requirement: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: '7.0'
61
- type: :development
62
- prerelease: false
63
- version_requirements: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: '7.0'
68
- - !ruby/object:Gem::Dependency
69
- name: pry-byebug
70
- requirement: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- version: '3.10'
75
- type: :development
76
- prerelease: false
77
- version_requirements: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - ">="
80
- - !ruby/object:Gem::Version
81
- version: '3.10'
82
- - !ruby/object:Gem::Dependency
83
- name: rake
84
- requirement: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - ">="
87
- - !ruby/object:Gem::Version
88
- version: '13.1'
89
- type: :development
90
- prerelease: false
91
- version_requirements: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- version: '13.1'
96
- - !ruby/object:Gem::Dependency
97
- name: rspec
98
- requirement: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- version: '3.0'
103
- type: :development
104
- prerelease: false
105
- version_requirements: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - ">="
108
- - !ruby/object:Gem::Version
109
- version: '3.0'
110
- - !ruby/object:Gem::Dependency
111
- name: rspec-json_expectations
112
- requirement: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- version: '2.0'
117
- type: :development
118
- prerelease: false
119
- version_requirements: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - ">="
122
- - !ruby/object:Gem::Version
123
- version: '2.0'
124
- - !ruby/object:Gem::Dependency
125
- name: rspec-mocks
126
- requirement: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - ">="
129
- - !ruby/object:Gem::Version
130
- version: '3.13'
131
- type: :development
132
- prerelease: false
133
- version_requirements: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - ">="
136
- - !ruby/object:Gem::Version
137
- version: '3.13'
138
- - !ruby/object:Gem::Dependency
139
- name: rubocop
140
- requirement: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - ">="
143
- - !ruby/object:Gem::Version
144
- version: '1.21'
145
- type: :development
146
- prerelease: false
147
- version_requirements: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - ">="
150
- - !ruby/object:Gem::Version
151
- version: '1.21'
152
- - !ruby/object:Gem::Dependency
153
- name: rubocop-rake
154
- requirement: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - ">="
157
- - !ruby/object:Gem::Version
158
- version: '0.6'
159
- type: :development
160
- prerelease: false
161
- version_requirements: !ruby/object:Gem::Requirement
162
- requirements:
163
- - - ">="
164
- - !ruby/object:Gem::Version
165
- version: '0.6'
166
- - !ruby/object:Gem::Dependency
167
- name: rubocop-rspec
168
- requirement: !ruby/object:Gem::Requirement
169
- requirements:
170
- - - ">="
171
- - !ruby/object:Gem::Version
172
- version: '2.29'
173
- type: :development
174
- prerelease: false
175
- version_requirements: !ruby/object:Gem::Requirement
176
- requirements:
177
- - - ">="
178
- - !ruby/object:Gem::Version
179
- version: '2.29'
180
- - !ruby/object:Gem::Dependency
181
- name: sqlite3
182
- requirement: !ruby/object:Gem::Requirement
183
- requirements:
184
- - - ">="
185
- - !ruby/object:Gem::Version
186
- version: '2'
187
- type: :development
188
- prerelease: false
189
- version_requirements: !ruby/object:Gem::Requirement
190
- requirements:
191
- - - ">="
192
- - !ruby/object:Gem::Version
193
- version: '2'
194
54
  description: Generate json-schema from plain Ruby classes.
195
55
  email:
196
56
  - bayona.sergio@gmail.com
@@ -211,23 +71,19 @@ files:
211
71
  - docs/_posts/2024-05-07-welcome-to-jekyll.markdown
212
72
  - docs/about.markdown
213
73
  - docs/index.markdown
74
+ - easy_talk.gemspec
214
75
  - lib/easy_talk.rb
215
76
  - lib/easy_talk/active_record_schema_builder.rb
216
- - lib/easy_talk/builders/all_of_builder.rb
217
- - lib/easy_talk/builders/any_of_builder.rb
218
77
  - lib/easy_talk/builders/base_builder.rb
219
78
  - lib/easy_talk/builders/boolean_builder.rb
220
79
  - lib/easy_talk/builders/collection_helpers.rb
221
80
  - lib/easy_talk/builders/composition_builder.rb
222
- - lib/easy_talk/builders/date_builder.rb
223
- - lib/easy_talk/builders/datetime_builder.rb
224
81
  - lib/easy_talk/builders/integer_builder.rb
225
82
  - lib/easy_talk/builders/null_builder.rb
226
83
  - lib/easy_talk/builders/number_builder.rb
227
84
  - lib/easy_talk/builders/object_builder.rb
228
- - lib/easy_talk/builders/one_of_builder.rb
229
85
  - lib/easy_talk/builders/string_builder.rb
230
- - lib/easy_talk/builders/time_builder.rb
86
+ - lib/easy_talk/builders/temporal_builder.rb
231
87
  - lib/easy_talk/builders/typed_array_builder.rb
232
88
  - lib/easy_talk/builders/union_builder.rb
233
89
  - lib/easy_talk/configuration.rb
@@ -239,10 +95,9 @@ files:
239
95
  - lib/easy_talk/schema_definition.rb
240
96
  - lib/easy_talk/sorbet_extension.rb
241
97
  - lib/easy_talk/tools/function_builder.rb
242
- - lib/easy_talk/types/all_of.rb
243
- - lib/easy_talk/types/any_of.rb
244
98
  - lib/easy_talk/types/base_composer.rb
245
- - lib/easy_talk/types/one_of.rb
99
+ - lib/easy_talk/types/composer.rb
100
+ - lib/easy_talk/validation_builder.rb
246
101
  - lib/easy_talk/version.rb
247
102
  homepage: https://github.com/sergiobayona/easy_talk
248
103
  licenses:
@@ -250,8 +105,8 @@ licenses:
250
105
  metadata:
251
106
  allowed_push_host: https://rubygems.org
252
107
  homepage_uri: https://github.com/sergiobayona/easy_talk
253
- source_code_uri: https://github.com/sergiobayona/easy_talk
254
108
  changelog_uri: https://github.com/sergiobayona/easy_talk/blob/main/CHANGELOG.md
109
+ rubygems_mfa_required: 'true'
255
110
  rdoc_options: []
256
111
  require_paths:
257
112
  - lib
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'composition_builder'
4
-
5
- module EasyTalk
6
- module Builders
7
- # Builder class for integer properties.
8
- class AllOfBuilder < CompositionBuilder
9
- end
10
- end
11
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'composition_builder'
4
-
5
- module EasyTalk
6
- module Builders
7
- # Builder class for integer properties.
8
- class AnyOfBuilder < CompositionBuilder
9
- end
10
- end
11
- end
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'base_builder'
4
-
5
- module EasyTalk
6
- module Builders
7
- # Builder class for date properties.
8
- class DateBuilder < StringBuilder
9
- # Modifies the schema to include the format constraint for a date property.
10
- sig { returns(T::Hash[Symbol, T.untyped]) }
11
- def schema
12
- super.tap do |schema|
13
- schema[:format] = 'date'
14
- end
15
- end
16
- end
17
- end
18
- end
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'base_builder'
4
-
5
- module EasyTalk
6
- module Builders
7
- # Builder class for datetime properties.
8
- class DatetimeBuilder < StringBuilder
9
- # Modifies the schema to include the format constraint for a datetime property.
10
- sig { returns(T::Hash[Symbol, T.untyped]) }
11
- def schema
12
- super.tap do |schema|
13
- schema[:format] = 'date-time'
14
- end
15
- end
16
- end
17
- end
18
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'composition_builder'
4
-
5
- module EasyTalk
6
- module Builders
7
- # Builder class for integer properties.
8
- class OneOfBuilder < CompositionBuilder
9
- end
10
- end
11
- end
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'base_builder'
4
-
5
- module EasyTalk
6
- module Builders
7
- # Builder class for time properties.
8
- class TimeBuilder < StringBuilder
9
- def schema
10
- super.tap do |schema|
11
- schema[:format] = 'time'
12
- end
13
- end
14
- end
15
- end
16
- end
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'base_composer'
4
- # The EasyTalk module provides a collection of types for composing schemas.
5
- module EasyTalk
6
- # The `Types` module provides a collection of classes for composing different types.
7
- module Types
8
- # Represents a composition type that allows all of the specified types.
9
- class AllOf < BaseComposer
10
- def self.name
11
- :allOf
12
- end
13
-
14
- def name
15
- :allOf
16
- end
17
- end
18
- end
19
- end
20
-
21
- module T
22
- # no-doc
23
- module AllOf
24
- # Creates a new instance of `EasyTalk::Types::AllOf` with the given arguments.
25
- #
26
- # @param args [Array] the list of arguments to be passed to the `EasyTalk::Types::AllOf` constructor
27
- # @return [EasyTalk::Types::AllOf] a new instance of `EasyTalk::Types::AllOf`
28
- def self.[](*args)
29
- EasyTalk::Types::AllOf.new(*args)
30
- end
31
- end
32
- end
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'base_composer'
4
- module EasyTalk
5
- module Types
6
- # The `Types` module provides a collection of composers for defining different types.
7
- #
8
- # This module contains composers for various types such as `AnyOf`, `AllOf`, etc.
9
- # Each composer is responsible for defining the behavior and properties of its respective type.
10
- class AnyOf < BaseComposer
11
- # Returns the name of the AnyOf composer.
12
- #
13
- # @return [Symbol] The name of the composer.
14
- def self.name
15
- :anyOf
16
- end
17
-
18
- # Returns the name of the AnyOf composer.
19
- #
20
- # @return [Symbol] The name of the composer.
21
- def name
22
- :anyOf
23
- end
24
- end
25
- end
26
- end
27
-
28
- module T
29
- # no-doc
30
- module AnyOf
31
- # Creates a new instance of `EasyTalk::Types::AnyOf` with the given arguments.
32
- #
33
- # @param args [Array] the list of arguments to be passed to the `EasyTalk::Types::AnyOf` constructor
34
- # @return [EasyTalk::Types::AnyOf] a new instance of `EasyTalk::Types::AnyOf`
35
- def self.[](*args)
36
- EasyTalk::Types::AnyOf.new(*args)
37
- end
38
- end
39
- end
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'base_composer'
4
- module EasyTalk
5
- module Types
6
- # Represents a composition type that allows one of the specified types.
7
- class OneOf < BaseComposer
8
- # Returns the name of the composition type.
9
- def self.name
10
- :oneOf
11
- end
12
-
13
- # Returns the name of the composition type.
14
- def name
15
- :oneOf
16
- end
17
- end
18
- end
19
- end
20
-
21
- module T
22
- # Creates a new instance of `EasyTalk::Types::OneOf` with the given arguments.
23
- #
24
- # @param args [Array] the list of arguments to be passed to the `EasyTalk::Types::OneOf` constructor
25
- # @return [EasyTalk::Types::OneOf] a new instance of `EasyTalk::Types::OneOf`
26
- module OneOf
27
- def self.[](*args)
28
- EasyTalk::Types::OneOf.new(*args)
29
- end
30
- end
31
- end