sober_swag 0.6.0 → 0.11.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/bin/console +9 -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 +13 -4
- data/lib/sober_swag/server.rb +6 -2
- 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: c07baa6165df700b23c0f8a0c9bd1a1dcb841d79b07995479b0c1e19a69928d7
|
4
|
+
data.tar.gz: 523a0eabeb954497f531485962b0f058dc9a32ec398df899162c66e5d985d01e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0ccf5c1f96d1647e42e082bfdd05c0a0ba3ff9d6d0bbe9139f9349bd17c917e854057af26a073c84aeeb54ac065c8c9f297d99d8063a0bccf032f77217c900bd
|
7
|
+
data.tar.gz: f01787f76223c896154312b43862ac1276154715c9b8234a761c84dc046a1f5ab7f82e387c821805bf2f3b22ed99452bd834336dfdfc8f15350345efcc575de8
|
data/bin/console
CHANGED
@@ -34,6 +34,15 @@ class LinkedList < SoberSwag::InputObject
|
|
34
34
|
attribute? :next, LinkedList
|
35
35
|
end
|
36
36
|
|
37
|
+
Foo = SoberSwag::OutputObject.define do
|
38
|
+
field :name, primitive(:String)
|
39
|
+
field :age, primitive(:String)
|
40
|
+
|
41
|
+
view :foo do
|
42
|
+
field :bar, primitive(:String).optional
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
37
46
|
# (If you use this, don't forget to add pry to your Gemfile!)
|
38
47
|
require 'pry'
|
39
48
|
Pry.start
|
@@ -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,21 +6,30 @@ 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
|
+
|
23
|
+
##
|
24
|
+
# Delegates to `base`, adds metadata, pumbs identifiers
|
18
25
|
def lazy_type
|
19
|
-
@base.lazy_type.meta(**
|
26
|
+
@base.lazy_type.meta(**metadata).tap { |t| t.identifier(@base.identifier) }
|
20
27
|
end
|
21
28
|
|
29
|
+
##
|
30
|
+
# Delegates to `base`, adds metadata, plumbs identifiers
|
22
31
|
def type
|
23
|
-
@base.type.meta(**
|
32
|
+
@base.type.meta(**metadata).tap { |t| t.identifier(@base.identifier) }
|
24
33
|
end
|
25
34
|
|
26
35
|
def finalize_lazy_type!
|
data/lib/sober_swag/server.rb
CHANGED
@@ -9,8 +9,12 @@ module SoberSwag
|
|
9
9
|
Rails.application.routes.routes.map { |route|
|
10
10
|
route.defaults[:controller]
|
11
11
|
}.to_set.reject(&:nil?).map { |controller|
|
12
|
-
|
13
|
-
|
12
|
+
begin
|
13
|
+
"#{controller}_controller".classify.constantize
|
14
|
+
rescue StandardError
|
15
|
+
nil
|
16
|
+
end
|
17
|
+
}.compact.filter { |controller| controller.ancestors.include?(SoberSwag::Controller) }
|
14
18
|
end
|
15
19
|
|
16
20
|
##
|
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.11.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: []
|