Sha256: 1f701e875b8bf71a6a406de12b9654fc0dabcfd511dea94df01627af3555a542

Contents?: true

Size: 1.27 KB

Versions: 1

Compression:

Stored size: 1.27 KB

Contents

module GrapeMarkdown
  class Configuration
    SETTINGS = %i(
      name
      description
      request_headers
      response_headers
      example_id_type
      resource_exclusion
      include_root
    ).freeze

    class << self
      attr_accessor(*SETTINGS)

      def extend(setting)
        self.class.send :attr_accessor, setting
      end

      def request_headers
        @request_headers ||= []
      end

      def response_headers
        @response_headers ||= []
      end

      def resource_exclusion
        @resource_exclusion ||= []
      end

      def include_root
        @include_root ||= false
      end

      def supported_id_types
        %i(integer uuid bson)
      end

      def example_id_type=(value)
        raise UnsupportedIDType unless supported_id_types.include?(value)

        if value.to_sym == :bson && !Object.const_defined?('BSON')
          raise BSONNotDefinied
        end

        @example_id_type = value
      end

      def example_id_type
        @example_id_type ||= :integer
      end

      def generate_id
        case example_id_type
        when :integer
          SecureRandom.random_number(1000)
        when :uuid
          SecureRandom.uuid
        when :bson
          BSON::ObjectId.new.to_s
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
grape-markdown-0.0.7 lib/grape-markdown/configuration.rb