r2-oas 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (129) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +45 -0
  3. data/GEMSPEC.md +4 -3
  4. data/README.ja.md +54 -37
  5. data/README.md +50 -31
  6. data/lib/r2-oas.rb +5 -7
  7. data/lib/r2-oas/app_configuration.rb +17 -1
  8. data/lib/r2-oas/app_configuration/deprecation.rb +28 -0
  9. data/lib/r2-oas/configuration.rb +52 -0
  10. data/lib/r2-oas/deploy/client.rb +21 -6
  11. data/lib/r2-oas/{plugins/schema/v3/object → dynamic/schema/v3/object/from_routes}/hookable_base_object.rb +7 -7
  12. data/lib/r2-oas/errors.rb +5 -0
  13. data/lib/r2-oas/hooks/hook.rb +7 -5
  14. data/lib/r2-oas/lib/core_ext/hash/deep_merge.rb +44 -0
  15. data/lib/r2-oas/lib/core_ext/object/blank.rb +135 -0
  16. data/lib/r2-oas/pluggable_configuration.rb +8 -5
  17. data/lib/r2-oas/plugin/base.rb +44 -0
  18. data/lib/r2-oas/plugin/executor.rb +148 -0
  19. data/lib/r2-oas/plugin/hookable.rb +42 -0
  20. data/lib/r2-oas/plugin/public.rb +3 -0
  21. data/lib/r2-oas/plugin/transform/transform.rb +10 -0
  22. data/lib/r2-oas/plugin/transform/v3/transform.rb +20 -0
  23. data/lib/r2-oas/plugin/transform/v3/visitable.rb +37 -0
  24. data/lib/r2-oas/public.rb +5 -0
  25. data/lib/r2-oas/schema/base.rb +1 -1
  26. data/lib/r2-oas/schema/builder.rb +1 -1
  27. data/lib/r2-oas/schema/editor.rb +8 -1
  28. data/lib/r2-oas/schema/v3/analyzer/path_analyzer.rb +1 -1
  29. data/lib/r2-oas/schema/v3/builder.rb +1 -1
  30. data/lib/r2-oas/schema/v3/builder/base_builder.rb +14 -2
  31. data/lib/r2-oas/schema/v3/builder/doc_builder.rb +10 -2
  32. data/lib/r2-oas/schema/v3/generator/base_generator.rb +7 -2
  33. data/lib/r2-oas/schema/v3/generator/doc_generator.rb +1 -1
  34. data/lib/r2-oas/schema/v3/manager/file/include_ref_base_file_manager.rb +3 -2
  35. data/lib/r2-oas/schema/v3/object/from_files/base_object.rb +62 -0
  36. data/lib/r2-oas/schema/v3/object/from_files/components/request_body_object.rb +103 -0
  37. data/lib/r2-oas/schema/v3/object/from_files/components/schema_object.rb +102 -0
  38. data/lib/r2-oas/schema/v3/object/from_files/components_object.rb +46 -0
  39. data/lib/r2-oas/schema/v3/object/from_files/external_document_object.rb +23 -0
  40. data/lib/r2-oas/schema/v3/object/from_files/info_object.rb +23 -0
  41. data/lib/r2-oas/schema/v3/object/from_files/openapi_object.rb +61 -0
  42. data/lib/r2-oas/schema/v3/object/from_files/path_item_object.rb +110 -0
  43. data/lib/r2-oas/schema/v3/object/from_files/paths_object.rb +33 -0
  44. data/lib/r2-oas/schema/v3/object/from_files/utils/all.rb +4 -0
  45. data/lib/r2-oas/schema/v3/object/from_files/utils/deep_methods.rb +27 -0
  46. data/lib/r2-oas/schema/v3/object/from_files/utils/refs.rb +151 -0
  47. data/lib/r2-oas/schema/v3/object/{base_object.rb → from_routes/base_object.rb} +11 -1
  48. data/lib/r2-oas/schema/v3/object/{components → from_routes/components}/request_body_object.rb +23 -19
  49. data/lib/r2-oas/schema/v3/object/{components → from_routes/components}/schema_object.rb +16 -12
  50. data/lib/r2-oas/schema/v3/object/{components_object.rb → from_routes/components_object.rb} +11 -11
  51. data/lib/r2-oas/schema/v3/object/from_routes/external_document_object.rb +28 -0
  52. data/lib/r2-oas/schema/v3/object/{info_object.rb → from_routes/info_object.rb} +11 -2
  53. data/lib/r2-oas/schema/v3/object/{openapi_object.rb → from_routes/openapi_object.rb} +12 -11
  54. data/lib/r2-oas/schema/v3/object/{path_item_object.rb → from_routes/path_item_object.rb} +6 -6
  55. data/lib/r2-oas/schema/v3/object/{paths_object.rb → from_routes/paths_object.rb} +11 -8
  56. data/lib/r2-oas/schema/v3/object/{public.rb → from_routes/public.rb} +0 -0
  57. data/lib/r2-oas/schema/v3/object/{server_object.rb → from_routes/server_object.rb} +0 -0
  58. data/lib/r2-oas/schema/v3/object/{tag_object.rb → from_routes/tag_object.rb} +2 -1
  59. data/lib/r2-oas/schema/v3/object/store.rb +54 -0
  60. data/lib/r2-oas/shared/all.rb +1 -0
  61. data/lib/r2-oas/shared/callable.rb +17 -0
  62. data/lib/r2-oas/store.rb +20 -16
  63. data/lib/r2-oas/support/deprecation.rb +24 -0
  64. data/lib/r2-oas/support/deprecation/behavior.rb +21 -0
  65. data/lib/r2-oas/support/deprecation/instance_delegator.rb +42 -0
  66. data/lib/r2-oas/support/deprecation/reporting.rb +91 -0
  67. data/lib/r2-oas/task_logging.rb +3 -7
  68. data/lib/r2-oas/tasks/common.rake +1 -2
  69. data/lib/r2-oas/tasks/main.rake +31 -9
  70. data/lib/r2-oas/tasks/tool.rake +16 -6
  71. data/lib/r2-oas/version.rb +1 -1
  72. data/r2-oas.gemspec +3 -5
  73. metadata +70 -81
  74. data/.github/ISSUE_TEMPLATE.md +0 -12
  75. data/.github/PULL_REQUEST_TEMPLATE.md +0 -12
  76. data/.gitignore +0 -16
  77. data/.rspec +0 -3
  78. data/.rubocop.yml +0 -10
  79. data/.rubocop_todo.yml +0 -282
  80. data/.travis.yml +0 -26
  81. data/Appraisals +0 -13
  82. data/CODE_OF_CONDUCT.md +0 -74
  83. data/Gemfile +0 -12
  84. data/Rakefile +0 -8
  85. data/bin/console +0 -12
  86. data/bin/setup +0 -8
  87. data/devscript/all_support_ruby.sh +0 -43
  88. data/devscript/bundle_for_all_support_ruby.sh +0 -31
  89. data/devscript/rspec_for_all_support_ruby.sh +0 -27
  90. data/docs/.nojekyll +0 -0
  91. data/docs/README.md +0 -173
  92. data/docs/_sidebar.md +0 -25
  93. data/docs/attention/if_clash.md +0 -17
  94. data/docs/index.html +0 -29
  95. data/docs/schema/3.0.0.md +0 -155
  96. data/docs/setting/COC.md +0 -14
  97. data/docs/setting/CORS.md +0 -22
  98. data/docs/setting/configure.md +0 -176
  99. data/docs/trableshouting/runtime_error.md +0 -44
  100. data/docs/usage/analyze_docs.md +0 -875
  101. data/docs/usage/clean_docs.md +0 -19
  102. data/docs/usage/deploy_docs.md +0 -839
  103. data/docs/usage/display_paths_list.md +0 -35
  104. data/docs/usage/display_paths_stats.md +0 -54
  105. data/docs/usage/edit_docs.md +0 -218
  106. data/docs/usage/generate_docs.md +0 -412
  107. data/docs/usage/monitor_docs.md +0 -219
  108. data/docs/usage/use_hook_methods.md +0 -236
  109. data/docs/usage/use_hook_to_generate_docs.md +0 -235
  110. data/docs/usage/use_schema_namespace.md +0 -181
  111. data/docs/usage/use_tag_namespace.md +0 -180
  112. data/docs/usage/view_docs.md +0 -262
  113. data/gemfiles/ruby_2.3.3.gemfile +0 -11
  114. data/gemfiles/ruby_2.4.2.gemfile +0 -11
  115. data/gemfiles/ruby_2.5.8.gemfile +0 -11
  116. data/gemfiles/ruby_2.6.6.gemfile +0 -11
  117. data/gemfiles/ruby_2.7.1.gemfile +0 -11
  118. data/lib/r2-oas/deploy/swagger-ui/dist/favicon-16x16.png +0 -0
  119. data/lib/r2-oas/deploy/swagger-ui/dist/favicon-32x32.png +0 -0
  120. data/lib/r2-oas/deploy/swagger-ui/dist/oauth2-redirect.html +0 -68
  121. data/lib/r2-oas/deploy/swagger-ui/dist/swagger-ui-bundle.js +0 -134
  122. data/lib/r2-oas/deploy/swagger-ui/dist/swagger-ui-bundle.js.map +0 -1
  123. data/lib/r2-oas/deploy/swagger-ui/dist/swagger-ui-standalone-preset.js +0 -22
  124. data/lib/r2-oas/deploy/swagger-ui/dist/swagger-ui-standalone-preset.js.map +0 -1
  125. data/lib/r2-oas/deploy/swagger-ui/dist/swagger-ui.css +0 -4
  126. data/lib/r2-oas/deploy/swagger-ui/dist/swagger-ui.css.map +0 -1
  127. data/lib/r2-oas/deploy/swagger-ui/dist/swagger-ui.js +0 -9
  128. data/lib/r2-oas/deploy/swagger-ui/dist/swagger-ui.js.map +0 -1
  129. data/lib/r2-oas/schema/v3/object/external_document_object.rb +0 -19
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'r2-oas/hooks/hook'
4
+
5
+ module R2OAS
6
+ module Plugin
7
+ module Hookable
8
+ def hooks_map
9
+ hook_klass.repository[:plugin]
10
+ end
11
+
12
+ def hooks
13
+ hooks_map[self].global_hooks_data
14
+ end
15
+
16
+ def hook_klass=(klass)
17
+ @@hook_klass = klass
18
+ end
19
+
20
+ def hook_klass
21
+ @@hook_klass
22
+ end
23
+
24
+ def on(on, callback, once = false)
25
+ hook_klass.on(on, callback, self, once)
26
+ end
27
+
28
+ # MEMO: Do not Use
29
+ def off(on, callback, once = false)
30
+ hook_klass.off(on, callback, self, once)
31
+ end
32
+
33
+ def execute_hook(on, *data)
34
+ hook_klass.execute_hook(on, *data, self)
35
+ end
36
+
37
+ def has_hook?(name)
38
+ hook_klass.has_hook?(name, self)
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'transform/transform'
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'r2-oas/plugin/transform/v3/transform'
4
+
5
+ R2OAS::Plugin::Transform = case ::R2OAS.version
6
+ when :v3
7
+ R2OAS::Plugin::V3::Transform
8
+ else
9
+ raise NoImplementError, "Do not support version: #{::R2OAS.version}"
10
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'visitable'
4
+ require 'r2-oas/plugin/base'
5
+
6
+ module R2OAS
7
+ module Plugin
8
+ module V3
9
+ class Transform < ::R2OAS::Plugin::Base
10
+ extend Visitable
11
+
12
+ def self.inherited(base)
13
+ super
14
+ self.hook_klass = ::R2OAS::Hooks::Hook.register(:plugin, base)
15
+ base.type = :transform
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'r2-oas/plugin/hookable'
4
+
5
+ module R2OAS
6
+ module Plugin
7
+ module V3
8
+ module Visitable
9
+ include R2OAS::Plugin::Hookable
10
+
11
+ SCHEMA_OBJECTS = %i[
12
+ info
13
+ path_item
14
+ external_document
15
+ components_schema
16
+ components_request_body
17
+ components_schema_name
18
+ components_schema_name_at_request_body
19
+ components_request_body_name
20
+ ].freeze
21
+
22
+ SCHEMA_OBJECTS.each do |schema_name|
23
+ define_method schema_name.to_s do |&block|
24
+ return if block.blank?
25
+
26
+ callback = proc { |*args| block.call(*args) }
27
+ on(schema_name, callback)
28
+ end
29
+
30
+ define_method "execute_#{schema_name}" do |*args|
31
+ execute_hook(schema_name, *args)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'r2-oas/configuration'
4
+ require 'r2-oas/errors'
5
+ require 'r2-oas/schema/v3/object/from_routes/public'
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../base'
3
+ require 'r2-oas/base'
4
4
 
5
5
  # Scope Rails
6
6
  module R2OAS
@@ -8,7 +8,7 @@ module R2OAS
8
8
  class Builder
9
9
  extend Forwardable
10
10
 
11
- def_delegators :@builder, :build_docs, :oas_doc
11
+ def_delegators :@builder, :build_docs, :oas_doc, :pure_oas_doc
12
12
 
13
13
  def initialize(options = {})
14
14
  case ::R2OAS.version
@@ -114,7 +114,14 @@ module R2OAS
114
114
  @browser ||= Watir::Browser.new(:chrome, capabilities)
115
115
  @browser.goto(url)
116
116
  if wait_for_loaded
117
- @browser.driver.local_storage[storage_key] = @schema_doc_from_local
117
+ # MEMO:
118
+ # Because it may not be updated
119
+ # Make sure that the launched local storage is updated reliably
120
+ Watir::Wait.until do
121
+ old_storage = @browser.driver.local_storage[storage_key].dup
122
+ @browser.driver.local_storage[storage_key] = new_storage = @schema_doc_from_local
123
+ old_storage != new_storage
124
+ end
118
125
  @browser.refresh
119
126
  end
120
127
  end
@@ -3,7 +3,7 @@
3
3
  require_relative 'base_analyzer'
4
4
  require 'r2-oas/schema/v3/manager/file/path_item_file_manager'
5
5
  require 'r2-oas/schema/v3/manager/file_manager'
6
- require 'r2-oas/schema/v3/object/tag_object'
6
+ require 'r2-oas/schema/v3/object/from_routes/tag_object'
7
7
 
8
8
  # Scope Rails
9
9
  module R2OAS
@@ -12,7 +12,7 @@ module R2OAS
12
12
  class Builder < BaseBuilder
13
13
  extend Forwardable
14
14
 
15
- def_delegators :@doc_builder, :oas_doc
15
+ def_delegators :@doc_builder, :oas_doc, :pure_oas_doc
16
16
 
17
17
  def initialize(options = {})
18
18
  super
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'r2-oas/schema/v3/base'
4
4
  require 'r2-oas/routing/parser'
5
- require 'r2-oas/schema/v3/object/openapi_object'
5
+ require 'r2-oas/schema/v3/object/from_routes/openapi_object'
6
6
  require 'r2-oas/schema/v3/manager/file/path_item_file_manager'
7
7
 
8
8
  module R2OAS
@@ -11,8 +11,14 @@ module R2OAS
11
11
  class BaseBuilder < Base
12
12
  include Sortable
13
13
 
14
- def initialize(options = {})
14
+ def initialize(opts = {})
15
15
  super
16
+
17
+ opts.keys.each do |key|
18
+ send("#{key}=", opts[key])
19
+ end
20
+
21
+ @opts = opts
16
22
  @glob_schema_paths = create_glob_schema_paths
17
23
  end
18
24
 
@@ -20,6 +26,12 @@ module R2OAS
20
26
 
21
27
  attr_accessor :unit_paths_file_path
22
28
  attr_accessor :skip_load_dot_paths
29
+ attr_accessor :opts
30
+ attr_accessor :use_plugin
31
+ attr_accessor :output
32
+
33
+ alias use_plugin? use_plugin
34
+ alias output? output
23
35
 
24
36
  def schema_file_do_not_exists?
25
37
  schema_files_paths.count == 0
@@ -2,13 +2,18 @@
2
2
 
3
3
  require 'yaml'
4
4
  require 'fileutils'
5
+ require 'r2-oas/schema/v3/object/from_files/openapi_object'
5
6
  require_relative 'base_builder'
6
7
 
7
8
  module R2OAS
8
9
  module Schema
9
10
  module V3
10
11
  class DocBuilder < BaseBuilder
11
- attr_accessor :oas_doc
12
+ attr_accessor :oas_doc, :pure_oas_doc
13
+
14
+ def initialize(opts = {})
15
+ super
16
+ end
12
17
 
13
18
  def build_docs
14
19
  logger.info '[Build OAS schema files] start'
@@ -34,8 +39,11 @@ module R2OAS
34
39
  result_before_squeeze
35
40
  end
36
41
 
42
+ @pure_oas_doc = result.dup
43
+ rsult = FromFiles::OpenapiObject.new(result, opts).to_doc if use_plugin?
37
44
  @oas_doc = result
38
- File.write(doc_save_file_path, result.to_yaml)
45
+
46
+ File.write(output? ? output_path : doc_save_file_path, result.to_yaml)
39
47
  end
40
48
  end
41
49
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'r2-oas/schema/v3/base'
4
4
  require 'r2-oas/routing/parser'
5
- require 'r2-oas/schema/v3/object/openapi_object'
5
+ require 'r2-oas/schema/v3/object/from_routes/openapi_object'
6
6
  require 'r2-oas/schema/v3/manager/file/path_item_file_manager'
7
7
  require 'r2-oas/store'
8
8
 
@@ -14,7 +14,12 @@ module R2OAS
14
14
 
15
15
  def initialize(options = {})
16
16
  super
17
- @store = Store.create
17
+
18
+ options.keys.each do |key|
19
+ send("#{key}=", options[key])
20
+ end
21
+
22
+ @store = ::R2OAS::Store.create(:schema)
18
23
  @glob_schema_paths = create_glob_schema_paths
19
24
  end
20
25
 
@@ -27,7 +27,7 @@ module R2OAS
27
27
  private
28
28
 
29
29
  def save_schemas_from_store
30
- local_store = Store.new(cache_docs)
30
+ local_store = ::R2OAS::Store.new(cache_docs)
31
31
 
32
32
  # Check checksum
33
33
  unless local_store.checksum?
@@ -36,12 +36,13 @@ module R2OAS
36
36
  attr_accessor :parent_save_file_paths, :recursive_search_class
37
37
 
38
38
  def deep_search_ref_recursive(yaml, &block)
39
- if yaml.is_a?(Hash)
39
+ case yaml
40
+ when Hash
40
41
  yaml.each do |key, value|
41
42
  process_deep_search_ref_recursive(key, value, &block)
42
43
  end
43
44
  # Support allOf/oneOf/anyOf
44
- elsif yaml.is_a?(Array)
45
+ when Array
45
46
  yaml.each do |el|
46
47
  next unless el.is_a?(Hash)
47
48
 
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'forwardable'
4
+ require 'key_flatten'
5
+
6
+ require 'r2-oas/plugin/executor'
7
+ require 'r2-oas/schema/v3/object/store'
8
+
9
+ module R2OAS
10
+ module Schema
11
+ module V3
12
+ module FromFiles
13
+ class BaseObject
14
+ extend Forwardable
15
+
16
+ class << self
17
+ def obj_store
18
+ ::R2OAS::Schema::V3::Store.create(:obj)
19
+ end
20
+ end
21
+
22
+ def_delegators :@plugin_executor, :execute_transform_plugins
23
+
24
+ def initialize(opts = {})
25
+ @opts = opts
26
+ plugins = app_configuration_options[:plugins]
27
+ @plugin_executor = ::R2OAS::Plugin::Executor.new(plugins, opts)
28
+ end
29
+
30
+ def to_doc
31
+ raise 'Implement Inherit Class'
32
+ end
33
+
34
+ private
35
+
36
+ def obj_store
37
+ self.class.obj_store
38
+ end
39
+
40
+ def set_root_doc(root_doc)
41
+ obj_store.root_doc = root_doc.dup
42
+ end
43
+
44
+ def root_doc
45
+ obj_store.root_doc
46
+ end
47
+
48
+ def set_components_name_list(root_doc)
49
+ obj_store.components_schema_name_list = (root_doc.fetch('components', nil)&.fetch('schemas', nil) || {}).keys.sort.uniq
50
+ obj_store.components_request_body_name_list = (root_doc.fetch('components', nil)&.fetch('schemas', nil) || {}).keys.sort.uniq
51
+ end
52
+
53
+ def app_configuration_options
54
+ R2OAS.app_configuration_options
55
+ end
56
+
57
+ attr_accessor :opts
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,103 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'r2-oas/shared/callable'
4
+ require 'r2-oas/errors'
5
+ require_relative '../base_object'
6
+ require_relative 'schema_object'
7
+ require_relative '../utils/all'
8
+
9
+ module R2OAS
10
+ module Schema
11
+ module V3
12
+ module FromFiles
13
+ module Components
14
+ class RequestBodyObject < ::R2OAS::Schema::V3::FromFiles::BaseObject
15
+ include ::R2OAS::Callable
16
+ include DeepMethods
17
+
18
+ def initialize(doc, ref, opts)
19
+ super(opts)
20
+ @doc = doc
21
+ @parent_ref = Components::RequestBodyRef.new(ref)
22
+ resolve_dependencies!
23
+ end
24
+
25
+ def to_doc
26
+ call_ref_path!
27
+
28
+ # MEMO:
29
+ # If it is overwritten, it may lead to unexpected problems, so give a copy
30
+ execute_transform_plugins(:components_request_body, @doc, ref_dup)
31
+ @doc
32
+ end
33
+
34
+ def resolve_dependencies!
35
+ deep_replace!(@doc, '$ref') do |ref_path|
36
+ schema_obj, schema_type, pure_schema_name = ref_path.split('/').slice(1..-1)
37
+ schema_doc = root_doc&.fetch(schema_obj, nil)&.fetch(schema_type, nil)&.fetch(pure_schema_name, nil) || {}
38
+
39
+ ref = create_child_ref(pure_schema_name)
40
+ obj = Components::SchemaObject.new(schema_doc, ref, opts)
41
+
42
+ obj_store.add('components/schemas', pure_schema_name, obj)
43
+ obj
44
+ end
45
+ end
46
+
47
+ def call_ref_path!
48
+ callback = proc { |obj| obj.ref_path }
49
+ deep_call(@doc, '$ref', callback)
50
+ end
51
+
52
+ def schema_name
53
+ return @resolved_schema_name if @resolved_schema_name.present?
54
+
55
+ before_schema_name = ref_dup[:schema_name]
56
+
57
+ _ref_dup = ref_dup
58
+ execute_transform_plugins(:components_request_body_name, _ref_dup)
59
+ @resolved_schema_name = _ref_dup[:schema_name]
60
+
61
+ if before_schema_name != @resolved_schema_name
62
+ if reserved_schema_name_list.include?(@resolved_schema_name)
63
+ raise DepulicateSchemaNameError, "Transformed schema name: '#{@resolved_schema_name}' cannot be used. It already exists."
64
+ else
65
+ obj_store.appended_components_request_body_name_list.push(@resolved_schema_name)
66
+ end
67
+ end
68
+
69
+ @resolved_schema_name
70
+ end
71
+
72
+ def ref_path
73
+ "#/components/requestBodies/#{schema_name}"
74
+ end
75
+
76
+ private
77
+
78
+ def ref_dup
79
+ @parent_ref.dup
80
+ end
81
+
82
+ def reserved_schema_name_list
83
+ (
84
+ obj_store.components_request_body_name_list +
85
+ obj_store.appended_components_request_body_name_list
86
+ ).uniq
87
+ end
88
+
89
+ def create_child_ref(schema_name)
90
+ local_ref_hash = ref_dup.to_h
91
+ parent_schema_name = local_ref_hash[:schema_name]
92
+ depth = local_ref_hash[:depth] + 1
93
+ ref_data = local_ref_hash.merge({ from: :request_body, schema_name: schema_name, parent_schema_name: parent_schema_name, depth: depth })
94
+ ref = Components::SchemaRef.new(ref_data)
95
+ ref.send(:parent=, ref_dup)
96
+ ref
97
+ end
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end