Class: RailsApiDoc::Controller::Parameter::Repository::Param

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_api_doc/controller/parameter/repository/param.rb

Overview

author: Vadim Shaveiko <@vshaveyko>

Constant Summary collapse

ACCEPTED_TYPES =
[String, Integer, Object, Array, DateTime, :enum, :model].freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, store) ⇒ Param



29
30
31
32
# File 'lib/rails_api_doc/controller/parameter/repository/param.rb', line 29

def initialize(name, store)
  @name = name
  @store = store
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args) ⇒ Object



42
43
44
45
# File 'lib/rails_api_doc/controller/parameter/repository/param.rb', line 42

def method_missing(name, *args)
  return @store.send(name, *args) if respond_to_missing?(name)
  super
end

Class Method Details

.accepted_nested_type?(type) ⇒ Boolean



8
9
10
# File 'lib/rails_api_doc/controller/parameter/repository/param.rb', line 8

def self.accepted_nested_type?(type)
  type == Object || type == :model
end

.valid_enum?(enum) ⇒ Boolean

Raises:

  • (ArgumentError)


18
19
20
21
# File 'lib/rails_api_doc/controller/parameter/repository/param.rb', line 18

def self.valid_enum?(enum)
  return if enum.nil? || enum.is_a?(Array)
  raise ArgumentError, 'Enum must be an array.'
end

.valid_nested?(type, block_given) ⇒ Boolean

Raises:

  • (ArgumentError)


23
24
25
26
27
# File 'lib/rails_api_doc/controller/parameter/repository/param.rb', line 23

def self.valid_nested?(type, block_given)
  return false unless accepted_nested_type?(type)
  return true if block_given
  raise ArgumentError, 'Empty object passed.'
end

.valid_type?(type) ⇒ Boolean

Raises:

  • (ArgumentError)


12
13
14
15
16
# File 'lib/rails_api_doc/controller/parameter/repository/param.rb', line 12

def self.valid_type?(type)
  return if type.in?(ACCEPTED_TYPES)
  raise ArgumentError, "Wrong type: #{type}. " \
                       "Correct types are: #{ACCEPTED_TYPES}."
end

Instance Method Details

#nested?Boolean



34
35
36
# File 'lib/rails_api_doc/controller/parameter/repository/param.rb', line 34

def nested?
  self.class.accepted_nested_type?(@store[:type])
end

#required?Boolean



38
39
40
# File 'lib/rails_api_doc/controller/parameter/repository/param.rb', line 38

def required?
  @store[:required]
end

#respond_to_missing?(name) ⇒ Boolean



47
48
49
# File 'lib/rails_api_doc/controller/parameter/repository/param.rb', line 47

def respond_to_missing?(name)
  @store.respond_to?(name)
end