r2-oas 0.4.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.
Files changed (136) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +99 -0
  3. data/GEMSPEC.md +20 -0
  4. data/LICENSE.txt +21 -0
  5. data/README.ja.md +271 -0
  6. data/README.md +271 -0
  7. data/lib/r2-oas.rb +35 -0
  8. data/lib/r2-oas/app_configuration.rb +121 -0
  9. data/lib/r2-oas/app_configuration/deprecation.rb +28 -0
  10. data/lib/r2-oas/app_configuration/server.rb +35 -0
  11. data/lib/r2-oas/app_configuration/swagger.rb +35 -0
  12. data/lib/r2-oas/app_configuration/swagger/editor.rb +47 -0
  13. data/lib/r2-oas/app_configuration/swagger/ui.rb +45 -0
  14. data/lib/r2-oas/app_configuration/tool.rb +31 -0
  15. data/lib/r2-oas/app_configuration/tool/paths/stats.rb +43 -0
  16. data/lib/r2-oas/base.rb +48 -0
  17. data/lib/r2-oas/configuration.rb +121 -0
  18. data/lib/r2-oas/configuration/paths_config.rb +44 -0
  19. data/lib/r2-oas/deploy/client.rb +70 -0
  20. data/lib/r2-oas/deploy/swagger-ui/index.html.erb +60 -0
  21. data/lib/r2-oas/dynamic/schema/v3/object/from_routes/hookable_base_object.rb +100 -0
  22. data/lib/r2-oas/errors.rb +13 -0
  23. data/lib/r2-oas/hooks/global_hook.rb +20 -0
  24. data/lib/r2-oas/hooks/hook.rb +79 -0
  25. data/lib/r2-oas/hooks/repository.rb +15 -0
  26. data/lib/r2-oas/lib/core_ext/hash/deep_merge.rb +44 -0
  27. data/lib/r2-oas/lib/core_ext/object/blank.rb +135 -0
  28. data/lib/r2-oas/lib/three-way-merge/twm.rb +83 -0
  29. data/lib/r2-oas/logger/stdout_logger.rb +129 -0
  30. data/lib/r2-oas/pluggable_configuration.rb +36 -0
  31. data/lib/r2-oas/plugin/base.rb +44 -0
  32. data/lib/r2-oas/plugin/executor.rb +148 -0
  33. data/lib/r2-oas/plugin/hookable.rb +42 -0
  34. data/lib/r2-oas/plugin/public.rb +3 -0
  35. data/lib/r2-oas/plugin/transform/transform.rb +10 -0
  36. data/lib/r2-oas/plugin/transform/v3/transform.rb +20 -0
  37. data/lib/r2-oas/plugin/transform/v3/visitable.rb +37 -0
  38. data/lib/r2-oas/public.rb +5 -0
  39. data/lib/r2-oas/routing/adjustor.rb +44 -0
  40. data/lib/r2-oas/routing/base.rb +12 -0
  41. data/lib/r2-oas/routing/components/all.rb +5 -0
  42. data/lib/r2-oas/routing/components/base_component.rb +10 -0
  43. data/lib/r2-oas/routing/components/path_component.rb +67 -0
  44. data/lib/r2-oas/routing/components/request_component.rb +75 -0
  45. data/lib/r2-oas/routing/components/verb_component.rb +21 -0
  46. data/lib/r2-oas/routing/parser.rb +93 -0
  47. data/lib/r2-oas/schema/analyzer.rb +23 -0
  48. data/lib/r2-oas/schema/base.rb +11 -0
  49. data/lib/r2-oas/schema/builder.rb +23 -0
  50. data/lib/r2-oas/schema/cleaner.rb +23 -0
  51. data/lib/r2-oas/schema/editor.rb +146 -0
  52. data/lib/r2-oas/schema/generator.rb +23 -0
  53. data/lib/r2-oas/schema/manager/file/path_item_file_manager.rb +24 -0
  54. data/lib/r2-oas/schema/manager/file_manager.rb +26 -0
  55. data/lib/r2-oas/schema/monitor.rb +52 -0
  56. data/lib/r2-oas/schema/squeezer.rb +23 -0
  57. data/lib/r2-oas/schema/ui.rb +73 -0
  58. data/lib/r2-oas/schema/v3/analyzer.rb +58 -0
  59. data/lib/r2-oas/schema/v3/analyzer/base_analyzer.rb +71 -0
  60. data/lib/r2-oas/schema/v3/analyzer/components/object_analyzer.rb +38 -0
  61. data/lib/r2-oas/schema/v3/analyzer/components_analyzer.rb +30 -0
  62. data/lib/r2-oas/schema/v3/analyzer/path_analyzer.rb +116 -0
  63. data/lib/r2-oas/schema/v3/analyzer/tag_analyzer.rb +38 -0
  64. data/lib/r2-oas/schema/v3/base.rb +28 -0
  65. data/lib/r2-oas/schema/v3/builder.rb +28 -0
  66. data/lib/r2-oas/schema/v3/builder/base_builder.rb +72 -0
  67. data/lib/r2-oas/schema/v3/builder/doc_builder.rb +51 -0
  68. data/lib/r2-oas/schema/v3/cleaner.rb +19 -0
  69. data/lib/r2-oas/schema/v3/cleaner/base_cleaner.rb +30 -0
  70. data/lib/r2-oas/schema/v3/cleaner/components_cleaner.rb +42 -0
  71. data/lib/r2-oas/schema/v3/generator.rb +24 -0
  72. data/lib/r2-oas/schema/v3/generator/base_generator.rb +122 -0
  73. data/lib/r2-oas/schema/v3/generator/components/object_generator.rb +64 -0
  74. data/lib/r2-oas/schema/v3/generator/components/request_body_generator.rb +45 -0
  75. data/lib/r2-oas/schema/v3/generator/components_generator.rb +38 -0
  76. data/lib/r2-oas/schema/v3/generator/doc_generator.rb +115 -0
  77. data/lib/r2-oas/schema/v3/generator/path_generator.rb +78 -0
  78. data/lib/r2-oas/schema/v3/generator/schema_generator.rb +58 -0
  79. data/lib/r2-oas/schema/v3/manager/diff/base_array_diff_manager.rb +60 -0
  80. data/lib/r2-oas/schema/v3/manager/diff/base_diff_manager.rb +29 -0
  81. data/lib/r2-oas/schema/v3/manager/diff/base_hash_diff_manager.rb +95 -0
  82. data/lib/r2-oas/schema/v3/manager/diff/components_diff_manager.rb +19 -0
  83. data/lib/r2-oas/schema/v3/manager/diff/tag_diff_manager.rb +17 -0
  84. data/lib/r2-oas/schema/v3/manager/file/base_file_manager.rb +66 -0
  85. data/lib/r2-oas/schema/v3/manager/file/components_file_manager.rb +22 -0
  86. data/lib/r2-oas/schema/v3/manager/file/include_ref_base_file_manager.rb +89 -0
  87. data/lib/r2-oas/schema/v3/manager/file/path_item_file_manager.rb +22 -0
  88. data/lib/r2-oas/schema/v3/manager/file_manager.rb +12 -0
  89. data/lib/r2-oas/schema/v3/manager/pathname_manager.rb +78 -0
  90. data/lib/r2-oas/schema/v3/object/from_files/base_object.rb +62 -0
  91. data/lib/r2-oas/schema/v3/object/from_files/components/request_body_object.rb +103 -0
  92. data/lib/r2-oas/schema/v3/object/from_files/components/schema_object.rb +102 -0
  93. data/lib/r2-oas/schema/v3/object/from_files/components_object.rb +46 -0
  94. data/lib/r2-oas/schema/v3/object/from_files/external_document_object.rb +23 -0
  95. data/lib/r2-oas/schema/v3/object/from_files/info_object.rb +23 -0
  96. data/lib/r2-oas/schema/v3/object/from_files/openapi_object.rb +61 -0
  97. data/lib/r2-oas/schema/v3/object/from_files/path_item_object.rb +110 -0
  98. data/lib/r2-oas/schema/v3/object/from_files/paths_object.rb +33 -0
  99. data/lib/r2-oas/schema/v3/object/from_files/utils/all.rb +4 -0
  100. data/lib/r2-oas/schema/v3/object/from_files/utils/deep_methods.rb +27 -0
  101. data/lib/r2-oas/schema/v3/object/from_files/utils/refs.rb +151 -0
  102. data/lib/r2-oas/schema/v3/object/from_routes/base_object.rb +75 -0
  103. data/lib/r2-oas/schema/v3/object/from_routes/components/request_body_object.rb +96 -0
  104. data/lib/r2-oas/schema/v3/object/from_routes/components/schema_object.rb +59 -0
  105. data/lib/r2-oas/schema/v3/object/from_routes/components_object.rb +81 -0
  106. data/lib/r2-oas/schema/v3/object/from_routes/external_document_object.rb +28 -0
  107. data/lib/r2-oas/schema/v3/object/from_routes/info_object.rb +43 -0
  108. data/lib/r2-oas/schema/v3/object/from_routes/openapi_object.rb +59 -0
  109. data/lib/r2-oas/schema/v3/object/from_routes/path_item_object.rb +175 -0
  110. data/lib/r2-oas/schema/v3/object/from_routes/paths_object.rb +77 -0
  111. data/lib/r2-oas/schema/v3/object/from_routes/public.rb +9 -0
  112. data/lib/r2-oas/schema/v3/object/from_routes/server_object.rb +21 -0
  113. data/lib/r2-oas/schema/v3/object/from_routes/tag_object.rb +37 -0
  114. data/lib/r2-oas/schema/v3/object/store.rb +54 -0
  115. data/lib/r2-oas/schema/v3/squeezer.rb +29 -0
  116. data/lib/r2-oas/schema/v3/squeezer/base_squeezer.rb +37 -0
  117. data/lib/r2-oas/schema/v3/squeezer/path_squeezer.rb +28 -0
  118. data/lib/r2-oas/schema/v3/squeezer/tag_squeezer.rb +19 -0
  119. data/lib/r2-oas/shared/all.rb +4 -0
  120. data/lib/r2-oas/shared/callable.rb +17 -0
  121. data/lib/r2-oas/shared/sortable.rb +23 -0
  122. data/lib/r2-oas/store.rb +122 -0
  123. data/lib/r2-oas/support/deprecation.rb +24 -0
  124. data/lib/r2-oas/support/deprecation/behavior.rb +21 -0
  125. data/lib/r2-oas/support/deprecation/instance_delegator.rb +42 -0
  126. data/lib/r2-oas/support/deprecation/reporting.rb +91 -0
  127. data/lib/r2-oas/task.rb +11 -0
  128. data/lib/r2-oas/task_logging.rb +41 -0
  129. data/lib/r2-oas/tasks/common.rake +25 -0
  130. data/lib/r2-oas/tasks/main.rake +132 -0
  131. data/lib/r2-oas/tasks/tool.rake +86 -0
  132. data/lib/r2-oas/tool/paths/ls.rb +15 -0
  133. data/lib/r2-oas/tool/paths/stats.rb +84 -0
  134. data/lib/r2-oas/version.rb +5 -0
  135. data/r2-oas.gemspec +48 -0
  136. metadata +415 -0
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module R2OAS
4
+ module Hooks
5
+ class Repository
6
+ attr_accessor :global_hooks_data, :last_hook_id, :target
7
+
8
+ def initialize(target)
9
+ @global_hooks_data = {}
10
+ @last_hook_id = 0
11
+ @target = target
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copy From https://github.com/rails/rails/blob/v4.2.5/activesupport/lib/active_support/core_ext/hash/deep_merge.rb
4
+
5
+ # rubocop:disable all
6
+ class Hash
7
+ # Returns a new hash with +self+ and +other_hash+ merged recursively.
8
+ #
9
+ # h1 = { a: true, b: { c: [1, 2, 3] } }
10
+ # h2 = { a: false, b: { x: [3, 4, 5] } }
11
+ #
12
+ # h1.deep_merge(h2) #=> { a: false, b: { c: [1, 2, 3], x: [3, 4, 5] } }
13
+ #
14
+ # Like with Hash#merge in the standard library, a block can be provided
15
+ # to merge values:
16
+ #
17
+ # h1 = { a: 100, b: 200, c: { c1: 100 } }
18
+ # h2 = { b: 250, c: { c1: 200 } }
19
+ # h1.deep_merge(h2) { |key, this_val, other_val| this_val + other_val }
20
+ # # => { a: 100, b: 450, c: { c1: 300 } }
21
+ def deep_merge(other_hash, &block)
22
+ dup.deep_merge!(other_hash, &block)
23
+ end
24
+
25
+ # Same as +deep_merge+, but modifies +self+.
26
+ def deep_merge!(other_hash, &block)
27
+ other_hash.each_pair do |current_key, other_value|
28
+ this_value = self[current_key]
29
+
30
+ self[current_key] = if this_value.is_a?(Hash) && other_value.is_a?(Hash)
31
+ this_value.deep_merge(other_value, &block)
32
+ else
33
+ if block_given? && key?(current_key)
34
+ block.call(current_key, this_value, other_value)
35
+ else
36
+ other_value
37
+ end
38
+ end
39
+ end
40
+
41
+ self
42
+ end
43
+ end
44
+ # rubocop:enable all
@@ -0,0 +1,135 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copy From https://github.com/rails/rails/blob/v4.2.5/activesupport/lib/active_support/core_ext/object/blank.rb
4
+
5
+ # rubocop:disable all
6
+ class Object
7
+ # An object is blank if it's false, empty, or a whitespace string.
8
+ # For example, +false+, '', ' ', +nil+, [], and {} are all blank.
9
+ #
10
+ # This simplifies
11
+ #
12
+ # !address || address.empty?
13
+ #
14
+ # to
15
+ #
16
+ # address.blank?
17
+ #
18
+ # @return [true, false]
19
+ def blank?
20
+ respond_to?(:empty?) ? !!empty? : !self
21
+ end
22
+
23
+ # An object is present if it's not blank.
24
+ #
25
+ # @return [true, false]
26
+ def present?
27
+ !blank?
28
+ end
29
+
30
+ # Returns the receiver if it's present otherwise returns +nil+.
31
+ # <tt>object.presence</tt> is equivalent to
32
+ #
33
+ # object.present? ? object : nil
34
+ #
35
+ # For example, something like
36
+ #
37
+ # state = params[:state] if params[:state].present?
38
+ # country = params[:country] if params[:country].present?
39
+ # region = state || country || 'US'
40
+ #
41
+ # becomes
42
+ #
43
+ # region = params[:state].presence || params[:country].presence || 'US'
44
+ #
45
+ # @return [Object]
46
+ def presence
47
+ self if present?
48
+ end
49
+ end
50
+
51
+ class NilClass
52
+ # +nil+ is blank:
53
+ #
54
+ # nil.blank? # => true
55
+ #
56
+ # @return [true]
57
+ def blank?
58
+ true
59
+ end
60
+ end
61
+
62
+ class FalseClass
63
+ # +false+ is blank:
64
+ #
65
+ # false.blank? # => true
66
+ #
67
+ # @return [true]
68
+ def blank?
69
+ true
70
+ end
71
+ end
72
+
73
+ class TrueClass
74
+ # +true+ is not blank:
75
+ #
76
+ # true.blank? # => false
77
+ #
78
+ # @return [false]
79
+ def blank?
80
+ false
81
+ end
82
+ end
83
+
84
+ class Array
85
+ # An array is blank if it's empty:
86
+ #
87
+ # [].blank? # => true
88
+ # [1,2,3].blank? # => false
89
+ #
90
+ # @return [true, false]
91
+ alias_method :blank?, :empty?
92
+ end
93
+
94
+ class Hash
95
+ # A hash is blank if it's empty:
96
+ #
97
+ # {}.blank? # => true
98
+ # { key: 'value' }.blank? # => false
99
+ #
100
+ # @return [true, false]
101
+ alias_method :blank?, :empty?
102
+ end
103
+
104
+ class String
105
+ BLANK_REGEXP = /\A[[:space:]]*\z/
106
+
107
+ # A string is blank if it's empty or contains whitespaces only:
108
+ #
109
+ # ''.blank? # => true
110
+ # ' '.blank? # => true
111
+ # "\t\n\r".blank? # => true
112
+ # ' blah '.blank? # => false
113
+ #
114
+ # Unicode whitespace is supported:
115
+ #
116
+ # "\u00a0".blank? # => true
117
+ #
118
+ # @return [true, false]
119
+ def blank?
120
+ BLANK_REGEXP === self
121
+ end
122
+ end
123
+
124
+ class Numeric #:nodoc:
125
+ # No number is blank:
126
+ #
127
+ # 1.blank? # => false
128
+ # 0.blank? # => false
129
+ #
130
+ # @return [false]
131
+ def blank?
132
+ false
133
+ end
134
+ end
135
+ # rubocop:enable all
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'key_flatten'
4
+
5
+ # rubocop:disable all
6
+ module Twm
7
+ class << self
8
+ #
9
+ # orig: local docs
10
+ # left: generate docs
11
+ # right: local src files
12
+ #
13
+ # condition: merge right into left
14
+ def yaml_merge(left, orig, right)
15
+ flat_orig = KeyFlatten.key_flatten(orig || {}).to_h
16
+ flat_left = KeyFlatten.key_flatten(left || {}).to_h
17
+ flat_right = KeyFlatten.key_flatten(right || {}).to_h
18
+
19
+ all_keys = (flat_left.keys + flat_orig.keys + flat_right.keys).uniq
20
+
21
+ twm = all_keys.each_with_object({}) do |key, result|
22
+ r = three_equal?(flat_left[key], flat_orig[key], flat_right[key])
23
+
24
+ if r[:left_orig] && r[:orig_right] && r[:left_right]
25
+ # no change
26
+ result[key] = flat_orig[key]
27
+ elsif r[:left_orig] && !r[:orig_right] && !r[:left_right]
28
+ # edited
29
+ result[key] = flat_right[key]
30
+ elsif !r[:left_orig] && r[:orig_right] && !r[:left_right]
31
+ # generate
32
+ result[key] = flat_left[key]
33
+ elsif !r[:left_orig] && !r[:orig_right] && r[:left_right]
34
+ # edited
35
+ result[key] = flat_right[key]
36
+ elsif !r[:left_orig] && !r[:orig_right] && !r[:left_right]
37
+ # conflict => prioritize edited
38
+ result[key] = flat_right[key]
39
+ end
40
+ end
41
+
42
+ twm = twm.delete_if { |_k, v| v.nil? }
43
+ KeyFlatten.key_unflatten(twm)
44
+ end
45
+
46
+ private
47
+
48
+ def three_equal?(left, orig, right)
49
+ if left == orig && orig == right
50
+ {
51
+ left_orig: true,
52
+ orig_right: true,
53
+ left_right: true
54
+ }
55
+ elsif left == orig && orig != right
56
+ {
57
+ left_orig: true,
58
+ orig_right: false,
59
+ left_right: false
60
+ }
61
+ elsif left != orig && orig == right
62
+ {
63
+ left_orig: false,
64
+ orig_right: true,
65
+ left_right: false
66
+ }
67
+ elsif left != orig && orig != right && left == right
68
+ {
69
+ left_orig: false,
70
+ orig_right: false,
71
+ left_right: true
72
+ }
73
+ elsif left != orig && orig != right && left != right
74
+ {
75
+ left_orig: false,
76
+ orig_right: false,
77
+ left_right: false
78
+ }
79
+ end
80
+ end
81
+ end
82
+ end
83
+ # rubocop:enable all
@@ -0,0 +1,129 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Referred to lib/ruby/2.3.0/logger.rb
4
+ module R2OAS
5
+ class StdoutLogger
6
+ DEBUG = 0
7
+ INFO = 1
8
+ WARN = 2
9
+ ERROR = 3
10
+ FATAL = 4
11
+ UNKNOWN = 5
12
+ NULL = 6
13
+ # Severity label for logging (max 5 chars).
14
+ SEV_LABEL = %w[DEBUG INFO WARN ERROR FATAL NULL ANY].each(&:freeze).freeze
15
+
16
+ # Logging severity threshold (e.g. <tt>Logger::INFO</tt>).
17
+ attr_reader :level
18
+
19
+ def initialize
20
+ @progname = nil
21
+ @level = INFO
22
+ @default_formatter = Formatter.new
23
+ @formatter = nil
24
+ end
25
+
26
+ # Set logging severity threshold.
27
+ #
28
+ # +severity+:: The Severity of the log message.
29
+ def level=(severity)
30
+ if severity.is_a?(Integer)
31
+ @level = severity
32
+ else
33
+ _severity = severity.to_s.downcase
34
+ case _severity
35
+ when 'debug'
36
+ @level = DEBUG
37
+ when 'info'
38
+ @level = INFO
39
+ when 'warn'
40
+ @level = WARN
41
+ when 'error'
42
+ @level = ERROR
43
+ when 'fatal'
44
+ @level = FATAL
45
+ when 'unknown'
46
+ @level = UNKNOWN
47
+ when 'null'
48
+ @level = NULL
49
+ else
50
+ raise ArgumentError, "invalid log level: #{severity}"
51
+ end
52
+ end
53
+ end
54
+
55
+ def debug(progname = nil)
56
+ add(DEBUG, nil, progname)
57
+ end
58
+
59
+ def info(progname = nil)
60
+ add(INFO, nil, progname)
61
+ end
62
+
63
+ def warn(progname = nil)
64
+ add(WARN, nil, progname)
65
+ end
66
+
67
+ def error(progname = nil)
68
+ add(ERROR, nil, progname)
69
+ end
70
+
71
+ def fatal(progname = nil)
72
+ add(FATAL, nil, progname)
73
+ end
74
+
75
+ def unknown(progname = nil)
76
+ add(UNKNOWN, nil, progname)
77
+ end
78
+
79
+ private
80
+
81
+ def add(severity, _message = nil, progname = nil)
82
+ severity ||= UNKNOWN
83
+ return true if severity < @level
84
+
85
+ puts format_message(format_severity(severity), Time.now, nil, progname)
86
+ end
87
+
88
+ def format_message(severity, datetime, progname, msg)
89
+ (@formatter || @default_formatter).call(severity, datetime, progname, msg)
90
+ end
91
+
92
+ def format_severity(severity)
93
+ SEV_LABEL[severity] || 'ANY'
94
+ end
95
+
96
+ # Default formatter for log messages.
97
+ class Formatter
98
+ Format = "%s, [%s#%d] %5s -- %s: %s\n"
99
+
100
+ attr_accessor :datetime_format
101
+
102
+ def initialize
103
+ @datetime_format = nil
104
+ end
105
+
106
+ def call(severity, time, progname, msg)
107
+ format(Format, severity[0..0], format_datetime(time), $PROCESS_ID.to_i, severity, progname, msg2str(msg))
108
+ end
109
+
110
+ private
111
+
112
+ def format_datetime(time)
113
+ time.strftime(@datetime_format || '%Y-%m-%dT%H:%M:%S.%6N ')
114
+ end
115
+
116
+ def msg2str(msg)
117
+ case msg
118
+ when ::String
119
+ msg
120
+ when ::Exception
121
+ "#{msg.message} (#{msg.class})\n" <<
122
+ (msg.backtrace || []).join("\n")
123
+ else
124
+ msg.inspect
125
+ end
126
+ end
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'r2-oas/schema/v3/object/from_routes/public'
4
+ require_relative 'support/deprecation'
5
+
6
+ module R2OAS
7
+ module PluggableConfiguration
8
+ # rubocop:disable Style/MutableConstant
9
+ DEFAULT_USE_OBJECT_CLASSES = {
10
+ info_object: R2OAS::Schema::V3::InfoObject,
11
+ paths_object: R2OAS::Schema::V3::PathsObject,
12
+ path_item_object: R2OAS::Schema::V3::PathItemObject,
13
+ external_document_object: R2OAS::Schema::V3::ExternalDocumentObject,
14
+ components_object: R2OAS::Schema::V3::ComponentsObject,
15
+ components_schema_object: R2OAS::Schema::V3::Components::SchemaObject,
16
+ components_request_body_object: R2OAS::Schema::V3::Components::RequestBodyObject
17
+ }
18
+ # rubocop:enable Style/MutableConstant
19
+
20
+ VALID_OPTIONS_KEYS = %i[
21
+ use_object_classes
22
+ ].freeze
23
+
24
+ attr_reader *VALID_OPTIONS_KEYS
25
+
26
+ private
27
+
28
+ module_function
29
+
30
+ def set_default(target)
31
+ Deprecation.silence do
32
+ target.use_object_classes = DEFAULT_USE_OBJECT_CLASSES
33
+ end
34
+ end
35
+ end
36
+ end