Class: SequelTools::ActionsManager::Action

Inherits:
Object
  • Object
show all
Defined in:
lib/sequel_tools/actions_manager.rb

Defined Under Namespace

Classes: AlreadyRegisteredAction

Constant Summary collapse

@@registered =
[]
@@registered_by_name =
{}

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, description, arg_names: [], &block) ⇒ Action

Returns a new instance of Action.



49
50
51
# File 'lib/sequel_tools/actions_manager.rb', line 49

def initialize(name, description, arg_names: [], &block)
  @name, @description, @arg_names, @block = name, description, arg_names, block
end

Instance Attribute Details

#arg_namesObject (readonly)

Returns the value of attribute arg_names.



47
48
49
# File 'lib/sequel_tools/actions_manager.rb', line 47

def arg_names
  @arg_names
end

#blockObject (readonly)

Returns the value of attribute block.



47
48
49
# File 'lib/sequel_tools/actions_manager.rb', line 47

def block
  @block
end

#descriptionObject (readonly)

Returns the value of attribute description.



47
48
49
# File 'lib/sequel_tools/actions_manager.rb', line 47

def description
  @description
end

#nameObject (readonly)

Returns the value of attribute name.



47
48
49
# File 'lib/sequel_tools/actions_manager.rb', line 47

def name
  @name
end

Class Method Details

.[](name) ⇒ Object



72
73
74
# File 'lib/sequel_tools/actions_manager.rb', line 72

def self.[](name)
  @@registered_by_name[name]
end

.register(name, description, arg_names: [], &block) ⇒ Object



60
61
62
63
64
65
66
# File 'lib/sequel_tools/actions_manager.rb', line 60

def self.register(name, description, arg_names: [], &block)
  if @@registered_by_name[name]
    raise AlreadyRegisteredAction, "Attempt to register #{name} twice"
  end
  @@registered <<
    (@@registered_by_name[name] = Action.new name, description, arg_names: arg_names, &block)
end

.register_action(action) ⇒ Object



87
88
89
# File 'lib/sequel_tools/actions_manager.rb', line 87

def self.register_action(action)
  register action.name, action.description, arg_names: action.arg_names, &action.block
end

.registeredObject



68
69
70
# File 'lib/sequel_tools/actions_manager.rb', line 68

def self.registered
  @@registered
end

.replace(name, description, arg_names: [], &block) ⇒ Object



82
83
84
85
# File 'lib/sequel_tools/actions_manager.rb', line 82

def self.replace(name, description, arg_names: [], &block)
  unregister name
  register name, description, arg_names: arg_names, &block
end

.unregister(name) ⇒ Object



76
77
78
79
80
# File 'lib/sequel_tools/actions_manager.rb', line 76

def self.unregister(name)
  return unless action = @@registered_by_name.delete(name)
  @@registered.delete action
  action
end

Instance Method Details

#run(args, context) ⇒ Object



53
54
55
# File 'lib/sequel_tools/actions_manager.rb', line 53

def run(args, context)
  @block.call args, context
end