Class: Tasking::Namespace

Inherits:
Object
  • Object
show all
Defined in:
lib/tasking/namespace.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, options = {}) ⇒ Namespace

Returns a new instance of Namespace.



37
38
39
40
41
42
43
# File 'lib/tasking/namespace.rb', line 37

def initialize( name, options = {} )
  @tasks = {}
  @name = name
  @options = Options.build( options )
  
  self.class.add_namespace( self )
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



3
4
5
# File 'lib/tasking/namespace.rb', line 3

def name
  @name
end

#optionsObject (readonly)

Returns the value of attribute options.



3
4
5
# File 'lib/tasking/namespace.rb', line 3

def options
  @options
end

Class Method Details

.add_namespace(ns) ⇒ Object



14
15
16
# File 'lib/tasking/namespace.rb', line 14

def self.add_namespace( ns )
  namespaces[ns.name] = ns
end

.allObject



10
11
12
# File 'lib/tasking/namespace.rb', line 10

def self.all
  namespaces.values
end

.find_namespace(name) ⇒ Object



18
19
20
# File 'lib/tasking/namespace.rb', line 18

def self.find_namespace( name )
  namespaces[name]
end

.find_or_create(name, options = {}) ⇒ Object



33
34
35
# File 'lib/tasking/namespace.rb', line 33

def self.find_or_create( name, options = {} )
  find_namespace( name ) || new( name, options )
end

.find_task(full_name) ⇒ Object



27
28
29
30
31
# File 'lib/tasking/namespace.rb', line 27

def self.find_task( full_name )
  namespace_name, _, task_name = full_name.rpartition( '::' )

  self.find_task_in_namespace( namespace_name, task_name )
end

.find_task_in_namespace(ns_name, task_name) ⇒ Object



22
23
24
25
# File 'lib/tasking/namespace.rb', line 22

def self.find_task_in_namespace( ns_name, task_name )
  ns = find_namespace( ns_name )
  ns&.find_task( task_name )
end

Instance Method Details

#execute(options = {}, &block) ⇒ Object



55
56
57
58
# File 'lib/tasking/namespace.rb', line 55

def execute( options = {}, &block )
  @options.merge!( options )
  block&.call
end

#find_task(name) ⇒ Object



72
73
74
# File 'lib/tasking/namespace.rb', line 72

def find_task( name )
  @tasks[name]
end

#merge_options(options) ⇒ Object



60
61
62
# File 'lib/tasking/namespace.rb', line 60

def merge_options( options )
  @options.merge!( options )
end

#parent_namespaceObject



49
50
51
52
53
# File 'lib/tasking/namespace.rb', line 49

def parent_namespace
  parent_name, _, _ = @name.rpartition( '::' )

  parent_name.empty? ? nil : self.class.find_namespace( parent_name )
end

#register_task(task) ⇒ Object



64
65
66
# File 'lib/tasking/namespace.rb', line 64

def register_task( task )
  @tasks[task.name] = task
end

#tasksObject



45
46
47
# File 'lib/tasking/namespace.rb', line 45

def tasks
  @tasks.values
end

#unregister_task(task) ⇒ Object



68
69
70
# File 'lib/tasking/namespace.rb', line 68

def unregister_task( task )
  @tasks.delete( task.name )
end