Class: JekyllOpenAPI::Dereferencer
- Inherits:
-
Object
- Object
- JekyllOpenAPI::Dereferencer
- Defined in:
- lib/jekyll_openapi/dereferencer.rb
Overview
Recursively resolves local $ref pointers in an OpenAPI document.
External references (other files, URLs) are left in place with a warning.
Circular references are detected and left in place instead of recursing forever.
Class Method Summary collapse
Instance Method Summary collapse
-
#dereference(node = @root, stack = []) ⇒ Object
A deep copy of the document with every local $ref replaced by its target.
-
#initialize(root, logger: JekyllOpenAPI.logger) ⇒ Dereferencer
constructor
A new instance of Dereferencer.
Constructor Details
#initialize(root, logger: JekyllOpenAPI.logger) ⇒ Dereferencer
Returns a new instance of Dereferencer.
9 10 11 12 |
# File 'lib/jekyll_openapi/dereferencer.rb', line 9 def initialize(root, logger: JekyllOpenAPI.logger) @root = root @logger = logger end |
Class Method Details
.dereference(root, logger: JekyllOpenAPI.logger) ⇒ Object
14 15 16 |
# File 'lib/jekyll_openapi/dereferencer.rb', line 14 def self.dereference(root, logger: JekyllOpenAPI.logger) new(root, logger: logger).dereference end |
Instance Method Details
#dereference(node = @root, stack = []) ⇒ Object
Returns a deep copy of the document with every local $ref replaced by its target.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/jekyll_openapi/dereferencer.rb', line 19 def dereference(node = @root, stack = []) case node when Hash if node.key?("$ref") resolve(node, stack) else node.transform_values { |value| dereference(value, stack) } end when Array node.map { |value| dereference(value, stack) } else node end end |