Class: ApipieDSL::Delegatable::Delegatee
Constant Summary
Constants included
from Parameter
Parameter::SUPPORTED_TYPES
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Method
#aliases, #example, #example_for, #method, #raises, #returns, #see, #signature
Methods included from Parameter
#block, #default_param_group_scope, #define_param_group, #keyword, #kwlist, #list, #optional, #param, #param_group, #required
Methods included from Klass
#app_info, #class_description, #default_prop_group_scope, #define_prop_group, #name, #prop_group, #property, #refs, #sections
Methods included from Common
#deprecated, #desc, #dsl_versions, #meta, #short, #show, #tags
Methods included from Base
#apipie_eval_dsl, #dsl_data, #dsl_data_clear
Constructor Details
#initialize(class_scope) ⇒ Delegatee
Returns a new instance of Delegatee.
361
362
363
|
# File 'lib/apipie_dsl/dsl.rb', line 361
def initialize(class_scope)
@class_scope = class_scope
end
|
Instance Attribute Details
#class_scope ⇒ Object
Returns the value of attribute class_scope.
359
360
361
|
# File 'lib/apipie_dsl/dsl.rb', line 359
def class_scope
@class_scope
end
|
Class Method Details
.define_validators(class_scope, method_desc) ⇒ Object
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
|
# File 'lib/apipie_dsl/dsl.rb', line 400
def self.define_validators(class_scope, method_desc)
return if method_desc.nil? || ![true, :implicitly, :explicitly].include?(ApipieDSL.configuration.validate)
return unless [true, :implicitly].include?(ApipieDSL.configuration.validate)
old_method = class_scope.instance_method(method_desc.name)
old_params = old_method.parameters.map { |param| param[1] }
class_scope.define_method(method_desc.name) do |*args|
if ApipieDSL.configuration.validate_value?
documented_params = ApipieDSL.get_method_description(ApipieDSL.get_class_name(self.class), __method__)
.param_descriptions
param_values = old_params.each_with_object({}) { |param, values| values[param] = args.shift }
documented_params.each do |param|
param.validate(param_values[param.name]) if param_values.key?(param.name)
end
end
old_method.bind(self).call(*args)
end
end
|
.extension_data ⇒ Object
396
397
398
|
# File 'lib/apipie_dsl/dsl.rb', line 396
def self.extension_data
@extension_data ||= { methods: [] }
end
|
.instance ⇒ Object
392
393
394
|
# File 'lib/apipie_dsl/dsl.rb', line 392
def self.instance
@instance_for
end
|
.instance_for(class_scope) ⇒ Object
384
385
386
|
# File 'lib/apipie_dsl/dsl.rb', line 384
def self.instance_for(class_scope)
@instance_for = new(class_scope)
end
|
.instance_reset ⇒ Object
388
389
390
|
# File 'lib/apipie_dsl/dsl.rb', line 388
def self.instance_reset
@instance_for = nil
end
|
.update_method_desc(method_desc, dsl_data) ⇒ Object
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
|
# File 'lib/apipie_dsl/dsl.rb', line 423
def self.update_method_desc(method_desc, dsl_data)
method_desc.full_description = dsl_data[:description] || method_desc.full_description
method_desc.short_description = dsl_data[:short_description] || method_desc.short_description
if dsl_data[:meta].is_a?(Hash)
method_desc.metadata&.merge!(dsl_data[:meta])
else
method_desc.metadata = dsl_data[:meta]
end
method_desc.show = dsl_data[:show]
method_desc.raises += dsl_data[:raises].map do |args|
ApipieDSL::ExceptionDescription.from_dsl_data(args)
end
params = dsl_data[:params].map do |args|
ApipieDSL::ParameterDescription.from_dsl_data(method_desc, args)
end
ParameterDescription.merge(method_desc.plain_params, params)
end
|
Instance Method Details
#eval_dsl_for(context) ⇒ Object
371
372
373
374
375
376
377
378
379
380
381
382
|
# File 'lib/apipie_dsl/dsl.rb', line 371
def eval_dsl_for(context)
case context
when :method
apipie_eval_dsl(&@dsl_block)
when :class
class_description(&@dsl_block)
when :param_group
define_param_group(@options[:name], &@dsl_block)
when :prop_group
define_prop_group(@options[:name], &@dsl_block)
end
end
|
#with(options = {}, &block) ⇒ Object
365
366
367
368
369
|
# File 'lib/apipie_dsl/dsl.rb', line 365
def with(options = {}, &block)
@dsl_block = block if block_given?
@options = options
self
end
|