Class: SemVerComponents::Plugins

Inherits:
Object
  • Object
show all
Defined in:
lib/sem_ver_components/plugins.rb

Overview

Loader of plugin classes available in the plugin directories

Instance Method Summary collapse

Constructor Details

#initialize(plugins_type) ⇒ Plugins

Constructor

Parameters:

  • plugins_type (Symbol) —

    Plugins type we are parsing



7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/sem_ver_components/plugins.rb', line 7

def initialize(plugins_type)
  @plugins_type = plugins_type
  @plugins = Dir.glob("#{__dir__}/#{plugins_type}/*.rb").to_h do |plugin_file|
    plugin_name = File.basename(plugin_file, '.rb').to_sym
    require "#{__dir__}/#{plugins_type}/#{plugin_name}.rb"
    [
      plugin_name,
      SemVerComponents
        .const_get(plugins_type.to_s.split('_').collect(&:capitalize).join.to_sym)
        .const_get(plugin_name.to_s.split('_').collect(&:capitalize).join.to_sym)
    ]
  end
end

Instance Method Details

#[](plugin_name) ⇒ Class

Get a plugin class

Parameters:

  • plugin_name (Symbol) —

    The plugin name

Returns:

  • (Class) —

    The corresponding plugin class



32
33
34
# File 'lib/sem_ver_components/plugins.rb', line 32

def [](plugin_name)
  @plugins[plugin_name]
end

#list ⇒ Array<Symbol>

List available plugin names

Returns:

  • (Array<Symbol>) —

    Available plugin names



24
25
26
# File 'lib/sem_ver_components/plugins.rb', line 24

def list
  @plugins.keys
end