module Legion::Extensions::Builder::Actors

Attributes

actors[R]

Public Instance Methods

actor_files() click to toggle source
# File lib/legion/extensions/builders/actors.rb, line 55
def actor_files
  @actor_files ||= find_files('actors')
end
build_actor_list() click to toggle source
# File lib/legion/extensions/builders/actors.rb, line 18
def build_actor_list
  actor_files.each do |file|
    actor_name = file.split('/').last.sub('.rb', '')
    actor_class = "#{lex_class}::Actor::#{actor_name.split('_').collect(&:capitalize).join}"
    @actors[actor_name.to_sym] = {
      extension:      lex_class.to_s.downcase,
      extension_name: extension_name,
      actor_name:     actor_name,
      actor_class:    Kernel.const_get(actor_class),
      type:           'literal'
    }
  end
end
build_actors() click to toggle source
# File lib/legion/extensions/builders/actors.rb, line 11
def build_actors
  @actors = {}
  require_files(actor_files)
  build_actor_list
  build_meta_actor_list
end
build_meta_actor(runner, attr) click to toggle source
# File lib/legion/extensions/builders/actors.rb, line 48
def build_meta_actor(runner, attr)
  define_constant_two('Actor', root: lex_class)

  Kernel.const_get("#{attr[:extension_class]}::Actor")
        .const_set(runner.to_s.split('_').collect(&:capitalize).join, Class.new(Legion::Extensions::Actors::Subscription))
end
build_meta_actor_list() click to toggle source
# File lib/legion/extensions/builders/actors.rb, line 32
def build_meta_actor_list
  @runners.each do |runner, attr|
    next if @actors[runner.to_sym].is_a? Hash

    actor_class = "#{attr[:extension_class]}::Actor::#{runner.to_s.split('_').collect(&:capitalize).join}"
    build_meta_actor(runner, attr) unless Kernel.const_defined? actor_class
    @actors[runner.to_sym] = {
      extension:      attr[:extension],
      extension_name: attr[:extension_name],
      actor_name:     attr[:runner_name],
      actor_class:    Kernel.const_get(actor_class),
      type:           'meta'
    }
  end
end