module PlcPlugins

Private Instance Methods

exec_plugins() click to toggle source
# File lib/plc/emulator/plc_plugins.rb, line 62
def exec_plugins
  send_message_plugins "exec", self
end
init_plugins() click to toggle source
# File lib/plc/emulator/plc_plugins.rb, line 58
def init_plugins
  send_message_plugins "init", self
end
load_plugins() click to toggle source
# File lib/plc/emulator/plc_plugins.rb, line 43
def load_plugins
  return unless plugins.empty?
  seen = {}

  Dir.glob("plugins/*_plugin.rb").each do |plugin_path|
    name = File.basename plugin_path, "_plugin.rb"
    next if seen[name]
    seen[name] = true

    require plugin_path.gsub(/\.rb$/, "")
    plugins << name
  end
  init_plugins
end
plugins() click to toggle source

def self.included(klass)

load_plugins

end

# File lib/plc/emulator/plc_plugins.rb, line 39
def plugins
  @plugins ||= []
end
send_message_plugins(method, arg) click to toggle source
# File lib/plc/emulator/plc_plugins.rb, line 66
def send_message_plugins method, arg
  plugins.each do |plugin|
    msg = "plugin_#{plugin}_#{method}"
    unless arg
      send msg if Object.respond_to?(msg, true)
    else
      send msg, arg if Object.respond_to?(msg, true)
    end
  end
end