Sha256: 9ea3e56f28bdb9b36e67b450395ee4cb8e1a7f709a5ca5840fe3bc6d4b479d18

Contents?: true

Size: 989 Bytes

Versions: 5

Compression:

Stored size: 989 Bytes

Contents

require_relative 'type'

module Swaggard
  module Swagger
    class Property

      attr_reader :id, :type, :description

      def initialize(yard_object)
        name = yard_object.name.dup
        options_and_description = yard_object.text&.dup || ''

        options_and_description.gsub!("\n", ' ')
        options, description = options_and_description.match(/\A(\[.*\])?(.*)\Z/).captures
        options = options ? options.gsub(/\[?\]?\s?/, '').split(',') : []
        description = description.strip
        required = name.gsub!(/^!/, '')

        @id = name
        @type = Type.new(yard_object.types)
        @description = description
        @required = required.present?
        @options = options
      end

      def required?
        @required
      end

      def to_doc
        result = @type.to_doc
        result['description'] = @description if @description.present?
        result['enum'] = @options if @options.present?
        result
      end

    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
swaggard-1.2.0 lib/swaggard/swagger/property.rb
swaggard-1.1.1 lib/swaggard/swagger/property.rb
swaggard-1.1.0 lib/swaggard/swagger/property.rb
swaggard-1.0.2 lib/swaggard/swagger/property.rb
swaggard-1.0.1 lib/swaggard/swagger/property.rb