sober_swag 0.7.0 → 0.12.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/lib/sober_swag/input_object.rb +7 -0
- data/lib/sober_swag/output_object.rb +4 -1
- data/lib/sober_swag/output_object/definition.rb +5 -1
- data/lib/sober_swag/output_object/view.rb +6 -2
- data/lib/sober_swag/serializer/mapped.rb +0 -7
- data/lib/sober_swag/serializer/meta.rb +14 -4
- data/lib/sober_swag/version.rb +1 -1
- data/sober_swag.gemspec +1 -0
- metadata +19 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fa0e0e510ec9344738f12f01098f1d34557ac41c83dc966b4368b1407496b868
|
4
|
+
data.tar.gz: 50f62bed3de241407e3d16caaae632dc8af21781477ac7e212a60af71780c932
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04ad84a03ee992677593aeea1342ddbb1fb693d7f67ae6c9e3b31b8d5050aeda86d71f65390d906ade4d30e458cdb7717d3ef02d93f3e966a92e4fac63240e8e
|
7
|
+
data.tar.gz: 535711fae0cc27c5122f5873cf64901e571631d9d87ecc04d44420deb99ff173bf83c0b36cdd34ce44aa6a697cec643098a8784be2487c2f9619ea78b52b2754
|
@@ -13,9 +13,16 @@ module SoberSwag
|
|
13
13
|
# The name to use for this type in external documentation.
|
14
14
|
def identifier(arg = nil)
|
15
15
|
@identifier = arg if arg
|
16
|
+
|
16
17
|
@identifier || name.to_s.gsub('::', '.')
|
17
18
|
end
|
18
19
|
|
20
|
+
def meta(*args)
|
21
|
+
super(*args).tap do |result|
|
22
|
+
result.identifier(identifier) if result.is_a?(Class) # pass on identifier
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
19
26
|
def primitive(sym)
|
20
27
|
SoberSwag::Types.const_get(sym)
|
21
28
|
end
|
@@ -77,7 +77,6 @@ module SoberSwag
|
|
77
77
|
begin
|
78
78
|
views.reduce(base_serializer) do |base, view|
|
79
79
|
view_serializer = view.serializer
|
80
|
-
view_serializer.identifier("#{identifier}.#{view.name.to_s.classify}") if identifier
|
81
80
|
SoberSwag::Serializer::Conditional.new(
|
82
81
|
proc do |object, options|
|
83
82
|
if options[:view].to_s == view.name.to_s
|
@@ -93,6 +92,10 @@ module SoberSwag
|
|
93
92
|
end
|
94
93
|
end
|
95
94
|
|
95
|
+
def to_s
|
96
|
+
"<SoberSwag::OutputObject(#{identifier})>"
|
97
|
+
end
|
98
|
+
|
96
99
|
def base_serializer
|
97
100
|
@base_serializer ||= SoberSwag::Serializer::FieldList.new(fields).tap do |s|
|
98
101
|
s.identifier(identifier)
|
@@ -18,7 +18,11 @@ module SoberSwag
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def view(name, &block)
|
21
|
-
|
21
|
+
view = View.define(name, fields, &block)
|
22
|
+
|
23
|
+
view.identifier("#{@identifier}.#{name.to_s.classify}") if identifier
|
24
|
+
|
25
|
+
@views << view
|
22
26
|
end
|
23
27
|
|
24
28
|
def identifier(arg = nil)
|
@@ -3,7 +3,7 @@ module SoberSwag
|
|
3
3
|
##
|
4
4
|
# DSL for defining a view.
|
5
5
|
# Used in `view` blocks within {SoberSwag::OutputObject.define}.
|
6
|
-
class View
|
6
|
+
class View < SoberSwag::Serializer::Base
|
7
7
|
def self.define(name, base_fields, &block)
|
8
8
|
new(name, base_fields).tap do |view|
|
9
9
|
view.instance_eval(&block)
|
@@ -41,12 +41,16 @@ module SoberSwag
|
|
41
41
|
@fields << field
|
42
42
|
end
|
43
43
|
|
44
|
+
def to_s
|
45
|
+
"<SoberSwag::OutputObject::View(#{identifier})>"
|
46
|
+
end
|
47
|
+
|
44
48
|
##
|
45
49
|
# Get the serializer defined by this view.
|
46
50
|
# WARNING: Don't add more fields after you call this.
|
47
51
|
def serializer
|
48
52
|
@serializer ||=
|
49
|
-
SoberSwag::Serializer::FieldList.new(fields)
|
53
|
+
SoberSwag::Serializer::FieldList.new(fields).tap { |s| s.identifier(identifier) }
|
50
54
|
end
|
51
55
|
end
|
52
56
|
end
|
@@ -29,13 +29,6 @@ module SoberSwag
|
|
29
29
|
def type
|
30
30
|
@base.type
|
31
31
|
end
|
32
|
-
|
33
|
-
##
|
34
|
-
# I have no freaking clue if ruby optimizes proc composition,
|
35
|
-
# but we at least save some node traversals here
|
36
|
-
def via_map(&block)
|
37
|
-
SoberSwag::Serializer::Mapped.new(@base, @map_f >> block)
|
38
|
-
end
|
39
32
|
end
|
40
33
|
end
|
41
34
|
end
|
@@ -6,25 +6,35 @@ module SoberSwag
|
|
6
6
|
class Meta < Base
|
7
7
|
def initialize(base, meta)
|
8
8
|
@base = base
|
9
|
-
@
|
9
|
+
@metadata = meta
|
10
|
+
@identifier = @base.identifier
|
10
11
|
end
|
11
12
|
|
12
|
-
attr_reader :base, :
|
13
|
+
attr_reader :base, :metadata
|
13
14
|
|
14
15
|
def serialize(args, opts = {})
|
15
16
|
base.serialize(args, opts)
|
16
17
|
end
|
17
18
|
|
19
|
+
def meta(hash)
|
20
|
+
self.class.new(base, metadata.merge(hash))
|
21
|
+
end
|
22
|
+
|
18
23
|
def lazy_type
|
19
|
-
@base.lazy_type.meta(**
|
24
|
+
@lazy_type ||= @base.lazy_type.meta(**metadata)
|
20
25
|
end
|
21
26
|
|
22
27
|
def type
|
23
|
-
@base.type.meta(**
|
28
|
+
@type ||= @base.type.meta(**metadata)
|
24
29
|
end
|
25
30
|
|
26
31
|
def finalize_lazy_type!
|
27
32
|
@base.finalize_lazy_type!
|
33
|
+
# Using .meta on dry-struct returns a *new type* that wraps the old one.
|
34
|
+
# As such, we need to be a bit clever about when we tack on the identifier
|
35
|
+
# for this type.
|
36
|
+
lazy_type.identifier(@base.lazy_type.identifier)
|
37
|
+
type.identifier(@base.type.identifier)
|
28
38
|
end
|
29
39
|
|
30
40
|
def lazy_type?
|
data/lib/sober_swag/version.rb
CHANGED
data/sober_swag.gemspec
CHANGED
@@ -36,6 +36,7 @@ Gem::Specification.new do |spec|
|
|
36
36
|
|
37
37
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
38
38
|
spec.add_development_dependency 'pry'
|
39
|
+
spec.add_development_dependency 'pry-byebug'
|
39
40
|
spec.add_development_dependency 'rake', '~> 13.0'
|
40
41
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
41
42
|
spec.add_development_dependency 'rubocop'
|
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.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anthony Super
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-08-
|
11
|
+
date: 2020-08-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: pry-byebug
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: rake
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -279,7 +293,7 @@ licenses:
|
|
279
293
|
metadata:
|
280
294
|
allowed_push_host: https://rubygems.org
|
281
295
|
homepage_uri: https://github.com/SonderMindOrg/sober_swag
|
282
|
-
post_install_message:
|
296
|
+
post_install_message:
|
283
297
|
rdoc_options: []
|
284
298
|
require_paths:
|
285
299
|
- lib
|
@@ -295,7 +309,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
295
309
|
version: '0'
|
296
310
|
requirements: []
|
297
311
|
rubygems_version: 3.0.3
|
298
|
-
signing_key:
|
312
|
+
signing_key:
|
299
313
|
specification_version: 4
|
300
314
|
summary: Generate swagger types from dry-types
|
301
315
|
test_files: []
|