Sha256: fd5067e00a2697f728c9458a20a4898440adff8b1c0afda716a4ed4670b8f418

Contents?: true

Size: 931 Bytes

Versions: 10

Compression:

Stored size: 931 Bytes

Contents

# A Composite that keeps track when a param description has been added to references
#   and returns the reference instead of the complete object
class Apipie::Generator::Swagger::ParamDescription::ReferencedComposite
  # @param [Apipie::Generator::Swagger::ParamDescription::Composite] composite
  # @param [Symbol, String] param_type
  def initialize(composite, param_type)
    @composite = composite
    @param_type = param_type.to_sym
  end

  def to_swagger
    return ref_to(:name) if added?(:name)

    schema_obj = @composite.to_swagger

    return nil if schema_obj.nil?

    add(schema_obj)

    { '$ref' => ref_to(@param_type) }
  end

  private

  def ref_to(name)
    "#/definitions/#{name}"
  end

  def add(schema)
    Apipie::Generator::Swagger::ReferencedDefinitions.instance.add!(@param_type, schema)
  end

  def added?(name)
    Apipie::Generator::Swagger::ReferencedDefinitions.instance.added?(name)
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
apipie-rails-1.4.2 lib/apipie/generator/swagger/param_description/referenced_composite.rb
apipie-rails-1.4.1 lib/apipie/generator/swagger/param_description/referenced_composite.rb
apipie-rails-1.4.0 lib/apipie/generator/swagger/param_description/referenced_composite.rb
apipie-rails-1.3.0 lib/apipie/generator/swagger/param_description/referenced_composite.rb
apipie-rails-1.2.3 lib/apipie/generator/swagger/param_description/referenced_composite.rb
apipie-rails-1.2.2 lib/apipie/generator/swagger/param_description/referenced_composite.rb
apipie-rails-1.2.1 lib/apipie/generator/swagger/param_description/referenced_composite.rb
apipie-rails-1.2.0 lib/apipie/generator/swagger/param_description/referenced_composite.rb
apipie-rails-1.1.0 lib/apipie/generator/swagger/param_description/referenced_composite.rb
apipie-rails-1.0.0 lib/apipie/generator/swagger/param_description/referenced_composite.rb