class R2OAS::Plugin::Executor

Attributes

plugin_map[RW]

Public Class Methods

create_use_plugins_info(plugins) click to toggle source
# File lib/r2-oas/plugin/executor.rb, line 114
def create_use_plugins_info(plugins)
  will_use_plugins = []
  result = {}

  plugins.each do |plugin_info|
    case plugin_info
    when Array
      plugin_name = plugin_info[0]
      plugin_opts = plugin_info[1]

      raise PluginNameError, 'Missing plugin name' if plugin_name.blank?

      result[plugin_name] = plugin_opts
    when String
      plugin_name = plugin_info
      plugin_opts = nil

      result[plugin_name] = plugin_opts
    else
      raise NoSupportError, "The plugin loading format '#{plugin_info.class}' is incorrect"
    end

    if will_use_plugins.include?(plugin_name)
      raise PluginDuplicationError, "Plugin: duplicate '#{plugin_name}'"
    else
      will_use_plugins.push(plugin_name)
    end
  end

  result
end
execute_plugins(plugin_map, type, hook_method, *args) click to toggle source
# File lib/r2-oas/plugin/executor.rb, line 32
def execute_plugins(plugin_map, type, hook_method, *args)
  return unless plugin_map.present?

  plugins_info = plugin_map[type.to_sym][hook_method.to_sym]

  return if plugins_info.nil?

  plugins_info.each do |info|
    opts = info[:plugin_opts]
    klass = info[:plugin_klass]
    klass.send(:opts=, opts) if opts.present?
    klass.send(info[:execute_hook_method], *args)
  end
end
execute_transform_plugins(plugin_map, hook_method, *args) click to toggle source
# File lib/r2-oas/plugin/executor.rb, line 28
def execute_transform_plugins(plugin_map, hook_method, *args)
  execute_plugins(plugin_map, :transform, hook_method, *args)
end
new(plugins, opts) click to toggle source
# File lib/r2-oas/plugin/executor.rb, line 11
def initialize(plugins, opts)
  @plugins = plugins
  @use_plugin = !!opts[:use_plugin]
end

Public Instance Methods

execute_transform_plugins(hook_method, *args) click to toggle source
# File lib/r2-oas/plugin/executor.rb, line 16
def execute_transform_plugins(hook_method, *args)
  return unless @use_plugin
  return unless @plugins.present?

  @plugin_map ||= self.class.plugin_map(@plugins)

  self.class.execute_transform_plugins(@plugin_map, hook_method, *args)
end