Sha256: c6827dbe7d0ef8031a75a3a8069681e8c8fb0575375d623a27fc21a4e3d86062

Contents?: true

Size: 796 Bytes

Versions: 5

Compression:

Stored size: 796 Bytes

Contents

require_relative './transform_keys'

module Jimmy
  class Reference
    include SchemaCreation::MetadataMethods
    attr_reader :uri, :data

    def initialize(uri, domain, nullable = false, *args, **opts, &block)
      @uri      = TransformKeys.transformer.transform_ref(uri, domain.options[:transform_keys])
      @nullable = nullable
      @data     = {}
      args.each { |arg| __send__ arg }
      opts.each { |arg| __send__ *arg }
      instance_exec &block if block
    end

    def compile
      data.merge(nullable? ?
        {
            'anyOf' => [
                {'type' => 'null'},
                ref_hash
            ]
        } :
        ref_hash
      )
    end

    def nullable?
      @nullable
    end

    private

    def ref_hash
      {'$ref' => uri}
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
jimmy-0.5.5 lib/jimmy/reference.rb
jimmy-0.5.4 lib/jimmy/reference.rb
jimmy-0.5.3 lib/jimmy/reference.rb
jimmy-0.5.2 lib/jimmy/reference.rb
jimmy-0.5.1 lib/jimmy/reference.rb