class Argo::Dereferencer

Public Class Methods

new(&block) click to toggle source
# File lib/argo/dereferencer.rb, line 5
def initialize(&block)
  @block = block
end

Public Instance Methods

dereference(hash) click to toggle source
# File lib/argo/dereferencer.rb, line 9
def dereference(hash)
  path = hash.fetch('$ref')
  fragments = path.split(/\//)
  unless fragments[0] == '#'
    raise "Can't dereference non-root-anchored path '#{path}'"
  end
  DeferredObject.new {
    fragments.drop(1).inject(@block.call) { |schema, fragment|
      schema.schemas.fetch(fragment)
    }
  }
end
reference?(hash) click to toggle source
# File lib/argo/dereferencer.rb, line 22
def reference?(hash)
  hash.key?('$ref')
end