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.



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

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.



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

def arg_names
  @arg_names
end

#blockObject (readonly)

Returns the value of attribute block.



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

def block
  @block
end

#descriptionObject (readonly)

Returns the value of attribute description.



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

def description
  @description
end

#nameObject (readonly)

Returns the value of attribute name.



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

def name
  @name
end

Class Method Details

.[](name) ⇒ Object



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

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

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



65
66
67
68
69
70
71
# File 'lib/sequel_tools/actions_manager.rb', line 65

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



92
93
94
# File 'lib/sequel_tools/actions_manager.rb', line 92

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

.registeredObject



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

def self.registered
  @@registered
end

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



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

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

.unregister(name) ⇒ Object



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

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

Instance Method Details

#run(args, context) ⇒ Object



58
59
60
# File 'lib/sequel_tools/actions_manager.rb', line 58

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