def initialize(method_description, name, validator, desc_or_options = nil, options = {}, &block)
if desc_or_options.is_a?(Hash)
options = options.merge(desc_or_options)
elsif desc_or_options.is_a?(String)
options[:desc] = desc_or_options
elsif !desc_or_options.nil?
raise ArgumentError.new("param description: expected description or options as 3rd parameter")
end
options.symbolize_keys!
@options = options
if @options[:param_group]
@from_concern = @options[:param_group][:from_concern]
end
@method_description = method_description
@name = concern_subst(name)
@as = options[:as] || @name
@desc = preformat_text(@options[:desc])
@parent = @options[:parent]
@metadata = @options[:meta]
@required = is_required?
@show = if @options.has_key? :show
@options[:show]
else
true
end
@allow_nil = @options[:allow_nil] || false
@allow_blank = @options[:allow_blank] || false
action_awareness
if validator
@validator = Validator::BaseValidator.find(self, validator, @options, block)
raise "Validator for #{validator} not found." unless @validator
end
@validations = Array(options[:validations]).map {|v| concern_subst(Apipie.markup_to_html(v)) }
end