class ApipieDSL::Delegatable::Delegatee
Attributes
class_scope[R]
Public Class Methods
define_validators(class_scope, method_desc)
click to toggle source
rubocop:disable Metrics/AbcSize
# File lib/apipie_dsl/dsl.rb, line 391 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| # apipie validations start 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 # apipie validations end old_method.bind(self).call(*args) end end
extension_data()
click to toggle source
# File lib/apipie_dsl/dsl.rb, line 386 def self.extension_data @extension_data ||= [] end
instance()
click to toggle source
# File lib/apipie_dsl/dsl.rb, line 382 def self.instance @instance_for end
instance_for(class_scope)
click to toggle source
# File lib/apipie_dsl/dsl.rb, line 374 def self.instance_for(class_scope) @instance_for = new(class_scope) end
instance_reset()
click to toggle source
# File lib/apipie_dsl/dsl.rb, line 378 def self.instance_reset @instance_for = nil end
new(class_scope)
click to toggle source
# File lib/apipie_dsl/dsl.rb, line 351 def initialize(class_scope) @class_scope = class_scope end
update_method_desc(method_desc, dsl_data)
click to toggle source
# File lib/apipie_dsl/dsl.rb, line 414 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 # Update parameters params = dsl_data[:params].map do |args| ApipieDSL::ParameterDescription.from_dsl_data(method_desc, args) end ParameterDescription.merge(method_desc.plain_params, params) end
Public Instance Methods
eval_dsl_for(context)
click to toggle source
# File lib/apipie_dsl/dsl.rb, line 361 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)
click to toggle source
# File lib/apipie_dsl/dsl.rb, line 355 def with(options = {}, &block) @dsl_block = block if block_given? @options = options self end