Class: Ghaki::Registry::Engine

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/ghaki/registry/engine.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeEngine

Returns a new instance of Engine.



15
16
17
# File 'lib/ghaki/registry/engine.rb', line 15

def initialize
  clear_features
end

Instance Attribute Details

#featuresObject (readonly)

Returns the value of attribute features.



12
13
14
# File 'lib/ghaki/registry/engine.rb', line 12

def features
  @features
end

Instance Method Details

#add_plugin(feat, plug, klass) ⇒ Object



55
56
57
# File 'lib/ghaki/registry/engine.rb', line 55

def add_plugin feat, plug, klass
  reserve_feature(feat).add_plugin( plug, klass )
end

#assert_feature!(name) ⇒ Object



32
33
34
# File 'lib/ghaki/registry/engine.rb', line 32

def assert_feature! name
  raise FeatureNotFoundError.new(name) unless has_feature? name
end

#assert_plugin!(feat, plug) ⇒ Object



61
62
63
# File 'lib/ghaki/registry/engine.rb', line 61

def assert_plugin! feat, plug
  get_feature(feat).assert_plugin!(plug)
end

#clear_featuresObject



18
19
20
# File 'lib/ghaki/registry/engine.rb', line 18

def clear_features
  @features = {}
end

#clear_plugins(feat) ⇒ Object



67
68
69
# File 'lib/ghaki/registry/engine.rb', line 67

def clear_plugins feat
  get_feature(feat).clear_plugins if has_feature?(feat)
end

#disable_feature(name) ⇒ Object



44
45
46
# File 'lib/ghaki/registry/engine.rb', line 44

def disable_feature name
  get_feature(name).disable
end

#disable_plugin(feat, plug) ⇒ Object



81
82
83
# File 'lib/ghaki/registry/engine.rb', line 81

def disable_plugin feat, plug
  get_plugin(feat,plug).disable
end

#enable_feature(name) ⇒ Object



41
42
43
# File 'lib/ghaki/registry/engine.rb', line 41

def enable_feature name
  get_feature(name).enable
end

#enable_plugin(feat, plug) ⇒ Object



78
79
80
# File 'lib/ghaki/registry/engine.rb', line 78

def enable_plugin feat, plug
  get_plugin(feat,plug).enable
end

#enabled_feature?(name) ⇒ Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/ghaki/registry/engine.rb', line 47

def enabled_feature? name
  get_feature(name).enabled?
end

#enabled_plugin?(feat, plug) ⇒ Boolean

Returns:

  • (Boolean)


84
85
86
# File 'lib/ghaki/registry/engine.rb', line 84

def enabled_plugin? feat, plug
  get_plugin(feat,plug).enabled?
end

#factory_create(feat, plug, *args) ⇒ Object



87
88
89
# File 'lib/ghaki/registry/engine.rb', line 87

def factory_create feat, plug, *args
  get_plugin(feat,plug).create(*args)
end

#failed_plugin?(feat, plug) ⇒ Boolean

Returns:

  • (Boolean)


93
94
95
# File 'lib/ghaki/registry/engine.rb', line 93

def failed_plugin? feat, plug
  get_plugin(feat,plug).failed?
end

#get_feature(name) ⇒ Object



35
36
37
38
# File 'lib/ghaki/registry/engine.rb', line 35

def get_feature name
  assert_feature! name
  @features[name]
end

#get_plugin(feat, plug) ⇒ Object



73
74
75
# File 'lib/ghaki/registry/engine.rb', line 73

def get_plugin feat, plug
  get_feature(feat).get_plugin(plug)
end

#has_feature?(name) ⇒ Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/ghaki/registry/engine.rb', line 29

def has_feature? name
  @features.has_key? name
end

#has_plugin?(feat, plug) ⇒ Boolean

Returns:

  • (Boolean)


58
59
60
# File 'lib/ghaki/registry/engine.rb', line 58

def has_plugin? feat, plug
  get_feature(feat).has_plugin? plug
end

#load_plugin(feat, plug, lib_path) ⇒ Object



70
71
72
# File 'lib/ghaki/registry/engine.rb', line 70

def load_plugin feat, plug, lib_path
  get_feature(feat).load_plugin(plug,lib_path)
end

#plugin_failure(feat, plug) ⇒ Object



90
91
92
# File 'lib/ghaki/registry/engine.rb', line 90

def plugin_failure feat, plug
  get_plugin(feat,plug).failure
end

#plugins(feat) ⇒ Object



52
53
54
# File 'lib/ghaki/registry/engine.rb', line 52

def plugins feat
  get_feature(feat).plugins
end

#remove_feature(name) ⇒ Object



26
27
28
# File 'lib/ghaki/registry/engine.rb', line 26

def remove_feature name
  @features.delete(name)
end

#remove_plugin(feat, plug) ⇒ Object



64
65
66
# File 'lib/ghaki/registry/engine.rb', line 64

def remove_plugin feat, plug
  get_feature(feat).remove_plugin(plug) if has_feature?(feat)
end

#reserve_feature(name) ⇒ Object



23
24
25
# File 'lib/ghaki/registry/engine.rb', line 23

def reserve_feature name
  @features[name] ||= Ghaki::Registry::Feature.new( name )
end