sober_swag 0.1.0 → 0.2.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/.github/config/rubocop_linter_action.yml +5 -0
- data/.github/workflows/lint.yml +15 -0
- data/.github/workflows/ruby.yml +23 -1
- data/.gitignore +3 -0
- data/.rubocop.yml +73 -1
- data/.ruby-version +1 -1
- data/Gemfile.lock +29 -5
- data/README.md +109 -0
- data/bin/console +15 -14
- data/docs/serializers.md +203 -0
- data/example/.rspec +1 -0
- data/example/.ruby-version +1 -1
- data/example/Gemfile +10 -6
- data/example/Gemfile.lock +96 -76
- data/example/app/controllers/people_controller.rb +37 -21
- data/example/app/controllers/posts_controller.rb +102 -0
- data/example/app/models/application_record.rb +3 -0
- data/example/app/models/person.rb +6 -0
- data/example/app/models/post.rb +9 -0
- data/example/app/output_objects/person_errors_output_object.rb +5 -0
- data/example/app/output_objects/person_output_object.rb +15 -0
- data/example/app/output_objects/post_output_object.rb +10 -0
- data/example/bin/bundle +24 -20
- data/example/bin/rails +1 -1
- data/example/bin/rake +1 -1
- data/example/config/application.rb +11 -7
- data/example/config/environments/development.rb +0 -1
- data/example/config/environments/production.rb +3 -3
- data/example/config/puma.rb +5 -5
- data/example/config/routes.rb +3 -0
- data/example/config/spring.rb +4 -4
- data/example/db/migrate/20200311152021_create_people.rb +0 -1
- data/example/db/migrate/20200603172347_create_posts.rb +11 -0
- data/example/db/schema.rb +16 -7
- data/example/spec/rails_helper.rb +64 -0
- data/example/spec/requests/people/create_spec.rb +52 -0
- data/example/spec/requests/people/get_spec.rb +35 -0
- data/example/spec/requests/people/index_spec.rb +69 -0
- data/example/spec/spec_helper.rb +94 -0
- data/lib/sober_swag.rb +6 -3
- data/lib/sober_swag/compiler/error.rb +2 -0
- data/lib/sober_swag/compiler/path.rb +2 -5
- data/lib/sober_swag/compiler/paths.rb +0 -1
- data/lib/sober_swag/compiler/type.rb +28 -15
- data/lib/sober_swag/controller.rb +16 -11
- data/lib/sober_swag/controller/route.rb +18 -21
- data/lib/sober_swag/controller/undefined_body_error.rb +3 -0
- data/lib/sober_swag/controller/undefined_path_error.rb +3 -0
- data/lib/sober_swag/controller/undefined_query_error.rb +3 -0
- data/lib/sober_swag/input_object.rb +28 -0
- data/lib/sober_swag/nodes/array.rb +1 -1
- data/lib/sober_swag/nodes/base.rb +2 -4
- data/lib/sober_swag/nodes/binary.rb +2 -1
- data/lib/sober_swag/nodes/enum.rb +4 -2
- data/lib/sober_swag/nodes/list.rb +0 -1
- data/lib/sober_swag/nodes/primitive.rb +6 -5
- data/lib/sober_swag/output_object.rb +102 -0
- data/lib/sober_swag/output_object/definition.rb +30 -0
- data/lib/sober_swag/{blueprint → output_object}/field.rb +14 -4
- data/lib/sober_swag/{blueprint → output_object}/field_syntax.rb +1 -1
- data/lib/sober_swag/{blueprint → output_object}/view.rb +15 -6
- data/lib/sober_swag/parser.rb +5 -3
- data/lib/sober_swag/serializer.rb +5 -2
- data/lib/sober_swag/serializer/array.rb +12 -0
- data/lib/sober_swag/serializer/base.rb +50 -1
- data/lib/sober_swag/serializer/conditional.rb +15 -2
- data/lib/sober_swag/serializer/field_list.rb +29 -6
- data/lib/sober_swag/serializer/mapped.rb +12 -2
- data/lib/sober_swag/serializer/meta.rb +35 -0
- data/lib/sober_swag/serializer/optional.rb +17 -2
- data/lib/sober_swag/serializer/primitive.rb +4 -1
- data/lib/sober_swag/server.rb +83 -0
- data/lib/sober_swag/types.rb +3 -0
- data/lib/sober_swag/version.rb +1 -1
- data/sober_swag.gemspec +6 -4
- metadata +77 -44
- data/example/person.json +0 -4
- data/example/test/controllers/.keep +0 -0
- data/example/test/fixtures/.keep +0 -0
- data/example/test/fixtures/files/.keep +0 -0
- data/example/test/fixtures/people.yml +0 -11
- data/example/test/integration/.keep +0 -0
- data/example/test/models/.keep +0 -0
- data/example/test/models/person_test.rb +0 -7
- data/example/test/test_helper.rb +0 -13
- data/lib/sober_swag/blueprint.rb +0 -113
- data/lib/sober_swag/path.rb +0 -8
- data/lib/sober_swag/path/integer.rb +0 -21
- data/lib/sober_swag/path/lit.rb +0 -41
- data/lib/sober_swag/path/literal.rb +0 -29
- data/lib/sober_swag/path/param.rb +0 -33
data/lib/sober_swag/path.rb
DELETED
data/lib/sober_swag/path/lit.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
module SoberSwag
|
2
|
-
class Path
|
3
|
-
class Lit
|
4
|
-
##
|
5
|
-
# Parse a literal path fragment
|
6
|
-
def initialize(lit)
|
7
|
-
@lit = lit
|
8
|
-
end
|
9
|
-
|
10
|
-
attr_reader :lit
|
11
|
-
|
12
|
-
def param?
|
13
|
-
false
|
14
|
-
end
|
15
|
-
|
16
|
-
def param_type
|
17
|
-
nil
|
18
|
-
end
|
19
|
-
|
20
|
-
def param_key
|
21
|
-
nil
|
22
|
-
end
|
23
|
-
|
24
|
-
##
|
25
|
-
# Constant to avoid a bunch of array allocation
|
26
|
-
MATCH_SUCC = [:match, nil].freeze
|
27
|
-
##
|
28
|
-
# Constant to avoid a bunch of array allocation
|
29
|
-
MATHC_FAIL = [:fail].freeze
|
30
|
-
|
31
|
-
def match(param)
|
32
|
-
if param == lit
|
33
|
-
MATCH_SUCC
|
34
|
-
else
|
35
|
-
MATCH_FAIL
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
module SoberSwag
|
2
|
-
module Path
|
3
|
-
##
|
4
|
-
# One literal text fragment, basically
|
5
|
-
class Literal < Node
|
6
|
-
##
|
7
|
-
# Make a new text node
|
8
|
-
# @param text [String]
|
9
|
-
def initialize(text)
|
10
|
-
@text = text
|
11
|
-
end
|
12
|
-
|
13
|
-
attr_reader :text
|
14
|
-
|
15
|
-
##
|
16
|
-
# We can make a jump table out of this node!
|
17
|
-
def jumpable?
|
18
|
-
true
|
19
|
-
end
|
20
|
-
|
21
|
-
##
|
22
|
-
# This doesn't read a parameter type.
|
23
|
-
def param?
|
24
|
-
false
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
module SoberSwag
|
2
|
-
class Path
|
3
|
-
##
|
4
|
-
# Parse a parameter
|
5
|
-
class Param
|
6
|
-
def initialize(name, type)
|
7
|
-
@name = name
|
8
|
-
@type = type
|
9
|
-
end
|
10
|
-
|
11
|
-
def param?
|
12
|
-
true
|
13
|
-
end
|
14
|
-
|
15
|
-
def param_key
|
16
|
-
@name
|
17
|
-
end
|
18
|
-
|
19
|
-
def param_type
|
20
|
-
@type
|
21
|
-
end
|
22
|
-
|
23
|
-
def match(param)
|
24
|
-
if (m = @type.try(param)).success?
|
25
|
-
[:match, m]
|
26
|
-
else
|
27
|
-
[:fail]
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|