sober_swag 0.18.0 → 0.22.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +15 -0
- data/.github/workflows/benchmark.yml +39 -0
- data/.github/workflows/lint.yml +2 -4
- data/.github/workflows/ruby.yml +1 -1
- data/.gitignore +3 -0
- data/.rubocop.yml +6 -1
- data/.yardopts +7 -0
- data/CHANGELOG.md +22 -0
- data/Gemfile +12 -0
- data/README.md +1 -1
- data/bench/benchmark.rb +34 -0
- data/bench/benchmarks/basic_field_serializer.rb +21 -0
- data/bench/benchmarks/view_selection.rb +47 -0
- data/bin/console +30 -10
- data/docs/reporting.md +190 -0
- data/docs/serializers.md +4 -1
- data/example/Gemfile +2 -2
- data/example/Gemfile.lock +116 -123
- data/example/app/controllers/application_controller.rb +4 -0
- data/example/app/controllers/people_controller.rb +44 -28
- data/example/app/output_objects/identified_output.rb +7 -0
- data/example/app/output_objects/person_output_object.rb +37 -11
- data/example/app/output_objects/post_output_object.rb +0 -4
- data/example/app/output_objects/reporting_post_output.rb +18 -0
- data/example/bin/rspec +29 -0
- data/example/config/environments/production.rb +1 -1
- data/example/spec/requests/people/create_spec.rb +3 -2
- data/example/spec/requests/people/index_spec.rb +1 -1
- data/lib/sober_swag/compiler/path.rb +45 -4
- data/lib/sober_swag/compiler/paths.rb +20 -0
- data/lib/sober_swag/compiler/primitive.rb +17 -0
- data/lib/sober_swag/compiler/type.rb +105 -22
- data/lib/sober_swag/compiler.rb +87 -15
- data/lib/sober_swag/controller/route.rb +147 -28
- data/lib/sober_swag/controller.rb +57 -17
- data/lib/sober_swag/input_object.rb +124 -7
- data/lib/sober_swag/nodes/array.rb +19 -0
- data/lib/sober_swag/nodes/attribute.rb +45 -4
- data/lib/sober_swag/nodes/base.rb +27 -7
- data/lib/sober_swag/nodes/binary.rb +30 -13
- data/lib/sober_swag/nodes/enum.rb +16 -1
- data/lib/sober_swag/nodes/list.rb +20 -0
- data/lib/sober_swag/nodes/nullable_primitive.rb +3 -0
- data/lib/sober_swag/nodes/object.rb +4 -1
- data/lib/sober_swag/nodes/one_of.rb +11 -3
- data/lib/sober_swag/nodes/primitive.rb +34 -2
- data/lib/sober_swag/nodes/sum.rb +8 -0
- data/lib/sober_swag/output_object/definition.rb +57 -1
- data/lib/sober_swag/output_object/field.rb +31 -11
- data/lib/sober_swag/output_object/field_syntax.rb +19 -3
- data/lib/sober_swag/output_object/view.rb +46 -1
- data/lib/sober_swag/output_object.rb +40 -19
- data/lib/sober_swag/parser.rb +7 -1
- data/lib/sober_swag/reporting/compiler.rb +39 -0
- data/lib/sober_swag/reporting/input/base.rb +11 -0
- data/lib/sober_swag/reporting/input/bool.rb +19 -0
- data/lib/sober_swag/reporting/input/converting/bool.rb +24 -0
- data/lib/sober_swag/reporting/input/converting/date.rb +30 -0
- data/lib/sober_swag/reporting/input/converting/date_time.rb +28 -0
- data/lib/sober_swag/reporting/input/converting/decimal.rb +24 -0
- data/lib/sober_swag/reporting/input/converting/integer.rb +19 -0
- data/lib/sober_swag/reporting/input/converting.rb +16 -0
- data/lib/sober_swag/reporting/input/defer.rb +29 -0
- data/lib/sober_swag/reporting/input/described.rb +38 -0
- data/lib/sober_swag/reporting/input/dictionary.rb +37 -0
- data/lib/sober_swag/reporting/input/either.rb +51 -0
- data/lib/sober_swag/reporting/input/enum.rb +44 -0
- data/lib/sober_swag/reporting/input/format.rb +39 -0
- data/lib/sober_swag/reporting/input/interface.rb +87 -0
- data/lib/sober_swag/reporting/input/list.rb +44 -0
- data/lib/sober_swag/reporting/input/mapped.rb +36 -0
- data/lib/sober_swag/reporting/input/merge_objects.rb +72 -0
- data/lib/sober_swag/reporting/input/null.rb +34 -0
- data/lib/sober_swag/reporting/input/number.rb +19 -0
- data/lib/sober_swag/reporting/input/object/property.rb +53 -0
- data/lib/sober_swag/reporting/input/object.rb +100 -0
- data/lib/sober_swag/reporting/input/pattern.rb +46 -0
- data/lib/sober_swag/reporting/input/referenced.rb +38 -0
- data/lib/sober_swag/reporting/input/struct.rb +271 -0
- data/lib/sober_swag/reporting/input/text.rb +42 -0
- data/lib/sober_swag/reporting/input.rb +54 -0
- data/lib/sober_swag/reporting/invalid_schema_error.rb +21 -0
- data/lib/sober_swag/reporting/output/base.rb +25 -0
- data/lib/sober_swag/reporting/output/bool.rb +25 -0
- data/lib/sober_swag/reporting/output/defer.rb +69 -0
- data/lib/sober_swag/reporting/output/described.rb +42 -0
- data/lib/sober_swag/reporting/output/dictionary.rb +46 -0
- data/lib/sober_swag/reporting/output/interface.rb +83 -0
- data/lib/sober_swag/reporting/output/list.rb +54 -0
- data/lib/sober_swag/reporting/output/merge_objects.rb +97 -0
- data/lib/sober_swag/reporting/output/null.rb +25 -0
- data/lib/sober_swag/reporting/output/number.rb +25 -0
- data/lib/sober_swag/reporting/output/object/property.rb +45 -0
- data/lib/sober_swag/reporting/output/object.rb +54 -0
- data/lib/sober_swag/reporting/output/partitioned.rb +77 -0
- data/lib/sober_swag/reporting/output/pattern.rb +50 -0
- data/lib/sober_swag/reporting/output/referenced.rb +42 -0
- data/lib/sober_swag/reporting/output/struct.rb +262 -0
- data/lib/sober_swag/reporting/output/text.rb +25 -0
- data/lib/sober_swag/reporting/output/via_map.rb +67 -0
- data/lib/sober_swag/reporting/output/viewed.rb +72 -0
- data/lib/sober_swag/reporting/output.rb +54 -0
- data/lib/sober_swag/reporting/report/base.rb +57 -0
- data/lib/sober_swag/reporting/report/either.rb +36 -0
- data/lib/sober_swag/reporting/report/error.rb +15 -0
- data/lib/sober_swag/reporting/report/list.rb +28 -0
- data/lib/sober_swag/reporting/report/merged_object.rb +25 -0
- data/lib/sober_swag/reporting/report/object.rb +29 -0
- data/lib/sober_swag/reporting/report/output.rb +14 -0
- data/lib/sober_swag/reporting/report/value.rb +28 -0
- data/lib/sober_swag/reporting/report.rb +16 -0
- data/lib/sober_swag/reporting.rb +11 -0
- data/lib/sober_swag/serializer/array.rb +27 -3
- data/lib/sober_swag/serializer/base.rb +75 -25
- data/lib/sober_swag/serializer/conditional.rb +33 -1
- data/lib/sober_swag/serializer/field_list.rb +23 -5
- data/lib/sober_swag/serializer/hash.rb +53 -0
- data/lib/sober_swag/serializer/mapped.rb +10 -1
- data/lib/sober_swag/serializer/optional.rb +18 -1
- data/lib/sober_swag/serializer/primitive.rb +3 -0
- data/lib/sober_swag/serializer.rb +1 -0
- data/lib/sober_swag/server.rb +27 -11
- data/lib/sober_swag/type/named.rb +14 -0
- data/lib/sober_swag/types/comma_array.rb +4 -0
- data/lib/sober_swag/version.rb +1 -1
- data/lib/sober_swag.rb +7 -1
- metadata +72 -2
data/lib/sober_swag.rb
CHANGED
@@ -9,8 +9,10 @@ require 'sober_swag/version'
|
|
9
9
|
require 'active_support/inflector'
|
10
10
|
|
11
11
|
##
|
12
|
-
# Root namespace
|
12
|
+
# Root namespace for the SoberSwag Module.
|
13
13
|
module SoberSwag
|
14
|
+
##
|
15
|
+
# Root Error Class for SoberSwag errors.
|
14
16
|
class Error < StandardError; end
|
15
17
|
|
16
18
|
autoload :Parser, 'sober_swag/parser'
|
@@ -22,11 +24,15 @@ module SoberSwag
|
|
22
24
|
autoload :InputObject, 'sober_swag/input_object'
|
23
25
|
autoload :Server, 'sober_swag/server'
|
24
26
|
autoload :Type, 'sober_swag/type'
|
27
|
+
autoload :Reporting, 'sober_swag/reporting'
|
25
28
|
|
26
29
|
##
|
27
30
|
# Define a struct of something.
|
28
31
|
# Useful to prevent weirdness from autoloading.
|
32
|
+
#
|
29
33
|
# @param parent [Class] the base class for the struct (default of {SoberSwag::Struct})
|
34
|
+
# @yieldself [SoberSwag::InputObject]
|
35
|
+
# @return [Class] the input object class generated
|
30
36
|
def self.input_object(parent = nil, &block)
|
31
37
|
Class.new(parent || SoberSwag::InputObject, &block)
|
32
38
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sober_swag
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.22.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anthony Super
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-12-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -172,6 +172,8 @@ extensions: []
|
|
172
172
|
extra_rdoc_files: []
|
173
173
|
files:
|
174
174
|
- ".github/config/rubocop_linter_action.yml"
|
175
|
+
- ".github/dependabot.yml"
|
176
|
+
- ".github/workflows/benchmark.yml"
|
175
177
|
- ".github/workflows/lint.yml"
|
176
178
|
- ".github/workflows/ruby.yml"
|
177
179
|
- ".gitignore"
|
@@ -179,14 +181,19 @@ files:
|
|
179
181
|
- ".rubocop.yml"
|
180
182
|
- ".ruby-version"
|
181
183
|
- ".travis.yml"
|
184
|
+
- ".yardopts"
|
182
185
|
- CHANGELOG.md
|
183
186
|
- Gemfile
|
184
187
|
- LICENSE.txt
|
185
188
|
- README.md
|
186
189
|
- Rakefile
|
190
|
+
- bench/benchmark.rb
|
191
|
+
- bench/benchmarks/basic_field_serializer.rb
|
192
|
+
- bench/benchmarks/view_selection.rb
|
187
193
|
- bin/console
|
188
194
|
- bin/rspec
|
189
195
|
- bin/setup
|
196
|
+
- docs/reporting.md
|
190
197
|
- docs/serializers.md
|
191
198
|
- example/.gitignore
|
192
199
|
- example/.rspec
|
@@ -204,12 +211,15 @@ files:
|
|
204
211
|
- example/app/models/concerns/.keep
|
205
212
|
- example/app/models/person.rb
|
206
213
|
- example/app/models/post.rb
|
214
|
+
- example/app/output_objects/identified_output.rb
|
207
215
|
- example/app/output_objects/person_errors_output_object.rb
|
208
216
|
- example/app/output_objects/person_output_object.rb
|
209
217
|
- example/app/output_objects/post_output_object.rb
|
218
|
+
- example/app/output_objects/reporting_post_output.rb
|
210
219
|
- example/bin/bundle
|
211
220
|
- example/bin/rails
|
212
221
|
- example/bin/rake
|
222
|
+
- example/bin/rspec
|
213
223
|
- example/bin/setup
|
214
224
|
- example/bin/spring
|
215
225
|
- example/config.ru
|
@@ -277,11 +287,71 @@ files:
|
|
277
287
|
- lib/sober_swag/output_object/field_syntax.rb
|
278
288
|
- lib/sober_swag/output_object/view.rb
|
279
289
|
- lib/sober_swag/parser.rb
|
290
|
+
- lib/sober_swag/reporting.rb
|
291
|
+
- lib/sober_swag/reporting/compiler.rb
|
292
|
+
- lib/sober_swag/reporting/input.rb
|
293
|
+
- lib/sober_swag/reporting/input/base.rb
|
294
|
+
- lib/sober_swag/reporting/input/bool.rb
|
295
|
+
- lib/sober_swag/reporting/input/converting.rb
|
296
|
+
- lib/sober_swag/reporting/input/converting/bool.rb
|
297
|
+
- lib/sober_swag/reporting/input/converting/date.rb
|
298
|
+
- lib/sober_swag/reporting/input/converting/date_time.rb
|
299
|
+
- lib/sober_swag/reporting/input/converting/decimal.rb
|
300
|
+
- lib/sober_swag/reporting/input/converting/integer.rb
|
301
|
+
- lib/sober_swag/reporting/input/defer.rb
|
302
|
+
- lib/sober_swag/reporting/input/described.rb
|
303
|
+
- lib/sober_swag/reporting/input/dictionary.rb
|
304
|
+
- lib/sober_swag/reporting/input/either.rb
|
305
|
+
- lib/sober_swag/reporting/input/enum.rb
|
306
|
+
- lib/sober_swag/reporting/input/format.rb
|
307
|
+
- lib/sober_swag/reporting/input/interface.rb
|
308
|
+
- lib/sober_swag/reporting/input/list.rb
|
309
|
+
- lib/sober_swag/reporting/input/mapped.rb
|
310
|
+
- lib/sober_swag/reporting/input/merge_objects.rb
|
311
|
+
- lib/sober_swag/reporting/input/null.rb
|
312
|
+
- lib/sober_swag/reporting/input/number.rb
|
313
|
+
- lib/sober_swag/reporting/input/object.rb
|
314
|
+
- lib/sober_swag/reporting/input/object/property.rb
|
315
|
+
- lib/sober_swag/reporting/input/pattern.rb
|
316
|
+
- lib/sober_swag/reporting/input/referenced.rb
|
317
|
+
- lib/sober_swag/reporting/input/struct.rb
|
318
|
+
- lib/sober_swag/reporting/input/text.rb
|
319
|
+
- lib/sober_swag/reporting/invalid_schema_error.rb
|
320
|
+
- lib/sober_swag/reporting/output.rb
|
321
|
+
- lib/sober_swag/reporting/output/base.rb
|
322
|
+
- lib/sober_swag/reporting/output/bool.rb
|
323
|
+
- lib/sober_swag/reporting/output/defer.rb
|
324
|
+
- lib/sober_swag/reporting/output/described.rb
|
325
|
+
- lib/sober_swag/reporting/output/dictionary.rb
|
326
|
+
- lib/sober_swag/reporting/output/interface.rb
|
327
|
+
- lib/sober_swag/reporting/output/list.rb
|
328
|
+
- lib/sober_swag/reporting/output/merge_objects.rb
|
329
|
+
- lib/sober_swag/reporting/output/null.rb
|
330
|
+
- lib/sober_swag/reporting/output/number.rb
|
331
|
+
- lib/sober_swag/reporting/output/object.rb
|
332
|
+
- lib/sober_swag/reporting/output/object/property.rb
|
333
|
+
- lib/sober_swag/reporting/output/partitioned.rb
|
334
|
+
- lib/sober_swag/reporting/output/pattern.rb
|
335
|
+
- lib/sober_swag/reporting/output/referenced.rb
|
336
|
+
- lib/sober_swag/reporting/output/struct.rb
|
337
|
+
- lib/sober_swag/reporting/output/text.rb
|
338
|
+
- lib/sober_swag/reporting/output/via_map.rb
|
339
|
+
- lib/sober_swag/reporting/output/viewed.rb
|
340
|
+
- lib/sober_swag/reporting/report.rb
|
341
|
+
- lib/sober_swag/reporting/report/base.rb
|
342
|
+
- lib/sober_swag/reporting/report/either.rb
|
343
|
+
- lib/sober_swag/reporting/report/error.rb
|
344
|
+
- lib/sober_swag/reporting/report/list.rb
|
345
|
+
- lib/sober_swag/reporting/report/merged_object.rb
|
346
|
+
- lib/sober_swag/reporting/report/object.rb
|
347
|
+
- lib/sober_swag/reporting/report/output.rb
|
348
|
+
- lib/sober_swag/reporting/report/value.rb
|
280
349
|
- lib/sober_swag/serializer.rb
|
281
350
|
- lib/sober_swag/serializer/array.rb
|
282
351
|
- lib/sober_swag/serializer/base.rb
|
283
352
|
- lib/sober_swag/serializer/conditional.rb
|
284
353
|
- lib/sober_swag/serializer/field_list.rb
|
354
|
+
- lib/sober_swag/serializer/hash.rb
|
285
355
|
- lib/sober_swag/serializer/mapped.rb
|
286
356
|
- lib/sober_swag/serializer/meta.rb
|
287
357
|
- lib/sober_swag/serializer/optional.rb
|