module Fend::Plugins::Core::ClassMethods

Attributes

opts[R]
validation_block[R]

Public Instance Methods

call(input) click to toggle source
# File lib/fend.rb, line 96
def call(input)
  new.call(input)
end
deprecation(message) click to toggle source

Prints a deprecation warning to standard error.

# File lib/fend.rb, line 101
def deprecation(message)
  warn "FEND DEPRECATION WARNING: #{message}"
end
inherited(subclass) click to toggle source
# File lib/fend.rb, line 50
def inherited(subclass)
  subclass.instance_variable_set(:@opts, opts.dup)
  subclass.opts.each do |key, value|
    if (value.is_a?(Array) || value.is_a?(Hash)) && !value.frozen?
      subclass.opts[key] = value.dup
    end
  end

  param_class = Class.new(self::Param)
  param_class.fend_class = subclass
  subclass.const_set(:Param, param_class)

  result_class = Class.new(self::Result)
  result_class.fend_class = subclass
  subclass.const_set(:Result, result_class)
end
plugin(plugin, *args, &block) click to toggle source
# File lib/fend.rb, line 67
def plugin(plugin, *args, &block)
  plugin = Plugins.load_plugin(plugin) if plugin.is_a?(Symbol)
  plugin.load_dependencies(self, *args, &block) if plugin.respond_to?(:load_dependencies)

  include(plugin::InstanceMethods) if defined?(plugin::InstanceMethods)
  extend(plugin::ClassMethods) if defined?(plugin::ClassMethods)

  self::Param.send(:include, plugin::ParamMethods) if defined?(plugin::ParamMethods)
  self::Param.extend(plugin::ParamClassMethods) if defined?(plugin::ParamClassMethods)

  self::Result.send(:include, plugin::ResultMethods) if defined?(plugin::ResultMethods)
  self::Result.extend(plugin::ResultClassMethods) if defined?(plugin::ResultClassMethods)

  plugin.configure(self, *args, &block) if plugin.respond_to?(:configure)

  plugin
end
validate(&block) click to toggle source

Store validation block for later execution:

validate do |i|
  i.params(:foo) do |foo|
    # foo validation logic
  end
end
# File lib/fend.rb, line 92
def validate(&block)
  @validation_block = block
end