Sha256: 51abd9ab606519f4a275f022952dca2bad48f83bdd0e77515a90f146d75ae173

Contents?: true

Size: 860 Bytes

Versions: 5

Compression:

Stored size: 860 Bytes

Contents

module Swaggard
  module Swagger
    class Definition

      attr_reader :id
      attr_writer :description, :title

      def initialize(id)
        @id = id
        @title = ''
        @properties = []
        @description = ''
      end

      def add_property(property)
        @properties << property
      end

      def empty?
        @properties.empty?
      end

      def to_doc
        {}.tap do |doc|
          doc['title'] = @title if @title.present?
          doc['type']  = 'object'

          doc['description'] = @description if @description.present?

          doc['properties'] =  Hash[@properties.map { |property| [property.id, property.to_doc] }]
          required_properties = @properties.select(&:required?).map(&:id)
          doc['required'] = required_properties if required_properties.any?
        end

      end

    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
swaggard-1.1.1 lib/swaggard/swagger/definition.rb
swaggard-1.1.0 lib/swaggard/swagger/definition.rb
swaggard-1.0.2 lib/swaggard/swagger/definition.rb
swaggard-1.0.1 lib/swaggard/swagger/definition.rb
swaggard-1.0.0 lib/swaggard/swagger/definition.rb