Sha256: 6a62f72f599d22dbd162908004c03695d4f92c3ffdcf2b61283ade31f75da82d

Contents?: true

Size: 943 Bytes

Versions: 3

Compression:

Stored size: 943 Bytes

Contents

module SwaggerYard
  #
  # Holds the name and type for a single model property
  #
  class Property
    attr_reader :name, :description

    def self.from_tag(tag)
      name, options_string = tag.name.split(/[\(\)]/)

      options = options_string.to_s.split(',').map(&:strip)

      new(name, tag.types, tag.text, options)
    end

    def initialize(name, types, description, options)
      @name, @description = name, description
      @required = options.include?('required')
      @nullable = options.include?('nullable')
      @type = Type.from_type_list(types)
    end

    def required?
      @required
    end

    def to_h
      @type.to_h.tap do |h|
        unless h['$ref']
          h["description"] = description if description
          if @nullable
            h["x-nullable"] = true
            if h["type"]
              h["type"] = [h["type"], "null"]
            end
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
swagger_yard-0.4.2 lib/swagger_yard/property.rb
swagger_yard-0.4.1 lib/swagger_yard/property.rb
swagger_yard-0.4.0 lib/swagger_yard/property.rb