Sha256: e086ffc603098f2d504fff0a3cef486ea19249fd25eda921b7242e8c6e87061e

Contents?: true

Size: 968 Bytes

Versions: 1

Compression:

Stored size: 968 Bytes

Contents

module Lurker
  module Json
    class Reference < Schema
      REF = '$ref'.freeze

      attr_reader :original_uri

      delegate :merge!, :replace!, :reorder!, to: :@schema

      def to_original_hash(options = {})
        @original_schema.to_hash
      end

      private

      def parse_schema(schema)
        @original_schema = schema.dup

        # NOTE : We decide that reference is relative, so we are using merge
        # We use first read for correct relative path resolving
        reader = Lurker::Json::Reader.new(@uri.merge(schema[REF]).path)
        payload = reader.payload

        @original_uri = parse_uri(reader.path)
        @schema = @parser.plain(uri: reader.path).parse(payload)

        # NOTE : The easiest way to get schema copy is to parse it again.
        # It's faster and reliable
        # @_schema = @parser.plain(uri: reader.path).parse(reader.payload)
        # @_schema_file = URI.parse(reader.path)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
lurker-0.6.3 lib/lurker/json/schema/reference.rb