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.
- checksums.yaml +4 -4
- data/.rubocop.yml +97 -17
- data/CHANGELOG.md +51 -0
- data/README.md +496 -60
- data/easy_talk.gemspec +38 -0
- data/lib/easy_talk/active_record_schema_builder.rb +8 -1
- data/lib/easy_talk/builders/composition_builder.rb +24 -1
- data/lib/easy_talk/builders/object_builder.rb +11 -20
- data/lib/easy_talk/builders/temporal_builder.rb +49 -0
- data/lib/easy_talk/configuration.rb +6 -3
- data/lib/easy_talk/errors_helper.rb +1 -0
- data/lib/easy_talk/model.rb +75 -14
- data/lib/easy_talk/property.rb +116 -44
- data/lib/easy_talk/schema_definition.rb +28 -16
- data/lib/easy_talk/types/composer.rb +89 -0
- data/lib/easy_talk/validation_builder.rb +339 -0
- data/lib/easy_talk/version.rb +1 -1
- data/lib/easy_talk.rb +5 -3
- metadata +13 -158
- data/lib/easy_talk/builders/all_of_builder.rb +0 -11
- data/lib/easy_talk/builders/any_of_builder.rb +0 -11
- data/lib/easy_talk/builders/date_builder.rb +0 -18
- data/lib/easy_talk/builders/datetime_builder.rb +0 -18
- data/lib/easy_talk/builders/one_of_builder.rb +0 -11
- data/lib/easy_talk/builders/time_builder.rb +0 -16
- data/lib/easy_talk/types/all_of.rb +0 -32
- data/lib/easy_talk/types/any_of.rb +0 -39
- data/lib/easy_talk/types/one_of.rb +0 -31
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:
|
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-
|
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/
|
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/
|
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,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,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
|