Sha256: 57a1bca1e245c9b131c5c1327dc88eeda8e756408c183f4a01b2315dcf3ccdbb

Contents?: true

Size: 713 Bytes

Versions: 11

Compression:

Stored size: 713 Bytes

Contents

require "json_refs"
require "hana"
require "active_support/core_ext/object/deep_dup"

module Swagger
  class DSL < Hash
    module ResolveModule
      def resolved
        JsonRefs.call(deep_dup)
      end

      def resolver
        method(:resolve)
      end

      def resolve(part_schema)
        walk(resolved, part_schema)
      end

      private

      def walk(all, part)
        if part.is_a?(Array)
          part.map { |item| walk(all, item) }
        elsif part.is_a?(Hash)
          ref = part["$ref"] || part[:"$ref"]
          ref ? walk(all, Hana::Pointer.new(ref[1..-1]).eval(all)) : part.map { |k, v| [k, walk(all, v)] }.to_h
        else
          part
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
swagger-dsl-2.0.5 lib/swagger/dsl/resolve_module.rb
swagger-dsl-2.0.4 lib/swagger/dsl/resolve_module.rb
swagger-dsl-2.0.3 lib/swagger/dsl/resolve_module.rb
swagger-dsl-2.0.2 lib/swagger/dsl/resolve_module.rb
swagger-dsl-2.0.1 lib/swagger/dsl/resolve_module.rb
swagger-dsl-2.0.0 lib/swagger/dsl/resolve_module.rb
swagger-dsl-1.5.1 lib/swagger/dsl/resolve_module.rb
swagger-dsl-1.5.0 lib/swagger/dsl/resolve_module.rb
swagger-dsl-1.4.0 lib/swagger/dsl/resolve_module.rb
swagger-dsl-1.3.0 lib/swagger/dsl/resolve_module.rb
swagger-dsl-1.2.1 lib/swagger/dsl/resolve_module.rb