sober_swag 0.19.0 → 0.20.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/lint.yml +1 -1
  3. data/.github/workflows/ruby.yml +1 -1
  4. data/.gitignore +2 -0
  5. data/.rubocop.yml +5 -1
  6. data/.yardopts +7 -0
  7. data/CHANGELOG.md +5 -0
  8. data/Gemfile +8 -0
  9. data/README.md +1 -1
  10. data/docs/serializers.md +3 -0
  11. data/example/Gemfile +1 -1
  12. data/example/config/environments/production.rb +1 -1
  13. data/lib/sober_swag.rb +6 -1
  14. data/lib/sober_swag/compiler.rb +29 -3
  15. data/lib/sober_swag/compiler/path.rb +42 -3
  16. data/lib/sober_swag/compiler/paths.rb +20 -0
  17. data/lib/sober_swag/compiler/primitive.rb +17 -0
  18. data/lib/sober_swag/compiler/type.rb +105 -22
  19. data/lib/sober_swag/controller.rb +39 -12
  20. data/lib/sober_swag/controller/route.rb +103 -20
  21. data/lib/sober_swag/input_object.rb +90 -7
  22. data/lib/sober_swag/nodes/array.rb +19 -0
  23. data/lib/sober_swag/nodes/attribute.rb +45 -4
  24. data/lib/sober_swag/nodes/base.rb +27 -7
  25. data/lib/sober_swag/nodes/binary.rb +30 -13
  26. data/lib/sober_swag/nodes/enum.rb +16 -1
  27. data/lib/sober_swag/nodes/list.rb +20 -0
  28. data/lib/sober_swag/nodes/nullable_primitive.rb +3 -0
  29. data/lib/sober_swag/nodes/object.rb +4 -1
  30. data/lib/sober_swag/nodes/one_of.rb +11 -3
  31. data/lib/sober_swag/nodes/primitive.rb +34 -2
  32. data/lib/sober_swag/nodes/sum.rb +8 -0
  33. data/lib/sober_swag/output_object.rb +35 -4
  34. data/lib/sober_swag/output_object/definition.rb +31 -1
  35. data/lib/sober_swag/output_object/field.rb +31 -11
  36. data/lib/sober_swag/output_object/field_syntax.rb +19 -3
  37. data/lib/sober_swag/output_object/view.rb +46 -1
  38. data/lib/sober_swag/parser.rb +7 -1
  39. data/lib/sober_swag/serializer/array.rb +27 -3
  40. data/lib/sober_swag/serializer/base.rb +75 -25
  41. data/lib/sober_swag/serializer/conditional.rb +33 -1
  42. data/lib/sober_swag/serializer/field_list.rb +18 -2
  43. data/lib/sober_swag/serializer/mapped.rb +10 -1
  44. data/lib/sober_swag/serializer/optional.rb +18 -1
  45. data/lib/sober_swag/serializer/primitive.rb +3 -0
  46. data/lib/sober_swag/server.rb +5 -1
  47. data/lib/sober_swag/type/named.rb +14 -0
  48. data/lib/sober_swag/types/comma_array.rb +4 -0
  49. data/lib/sober_swag/version.rb +1 -1
  50. metadata +3 -2
@@ -9,24 +9,38 @@ module SoberSwag
9
9
  # Modules that include {SoberSwag::Type::Named}
10
10
  # will automatically extend this module.
11
11
  module ClassMethods
12
+ ##
13
+ # Is this type a "wrapper" for another type?
12
14
  def alias?
13
15
  false
14
16
  end
15
17
 
18
+ ##
19
+ # The type this type is a wrapper for
16
20
  def alias_of
17
21
  nil
18
22
  end
19
23
 
24
+ ##
25
+ # The "root" type along the alias chain
20
26
  def root_alias
21
27
  alias_of || self
22
28
  end
23
29
 
30
+ ##
31
+ # @overload description()
32
+ # @return [String] a human-readable description of this type
33
+ # @overload description(arg)
34
+ # @param arg [String] a human-readable description of this type
35
+ # @return [String] `arg`
24
36
  def description(arg = nil)
25
37
  @description = arg if arg
26
38
  @description
27
39
  end
28
40
  end
29
41
 
42
+ ##
43
+ # When included, extends {SoberSwag::Type::Named::ClassMethods}
30
44
  def self.included(mod)
31
45
  mod.extend(ClassMethods)
32
46
  end
@@ -3,6 +3,10 @@ module SoberSwag
3
3
  ##
4
4
  # An array that will be parsed from comma-separated values in a string, if given a string.
5
5
  module CommaArray
6
+ ##
7
+ # Get a parser that will parse comma-separated values of another type.
8
+ # @param other [Class] a swagger-able type to parse into
9
+ # @return [SoberSwag::Types::CommaArray]
6
10
  def self.of(other)
7
11
  SoberSwag::Types::Array.of(other).constructor { |val|
8
12
  if val.is_a?(::String)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SoberSwag
4
- VERSION = '0.19.0'
4
+ VERSION = '0.20.0'
5
5
  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.19.0
4
+ version: 0.20.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-03-10 00:00:00.000000000 Z
11
+ date: 2021-05-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -180,6 +180,7 @@ files:
180
180
  - ".rubocop.yml"
181
181
  - ".ruby-version"
182
182
  - ".travis.yml"
183
+ - ".yardopts"
183
184
  - CHANGELOG.md
184
185
  - Gemfile
185
186
  - LICENSE.txt