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