Class: RgGen::Core::Builder::ListFeatureEntry
Instance Attribute Summary
#name, #registry
Instance Method Summary
collapse
#attach_context
#build_factory, #eval_bodies, #match_entry_type?
Constructor Details
Returns a new instance of ListFeatureEntry.
9
10
11
12
|
# File 'lib/rggen/core/builder/list_feature_entry.rb', line 9
def initialize(registry, name)
super
@features = {}
end
|
Instance Method Details
#define_base_feature(&body) ⇒ Object
Also known as:
base_feature
26
27
28
|
# File 'lib/rggen/core/builder/list_feature_entry.rb', line 26
def define_base_feature(&body)
body && @base_feature.class_exec(&body)
end
|
#define_default_feature(&body) ⇒ Object
Also known as:
default_feature
50
51
52
53
|
# File 'lib/rggen/core/builder/list_feature_entry.rb', line 50
def define_default_feature(&body)
@default_feature ||= Class.new(@base_feature)
body && @default_feature.class_exec(&body)
end
|
#define_factory ⇒ Object
Also known as:
factory
20
21
22
|
# File 'lib/rggen/core/builder/list_feature_entry.rb', line 20
def define_factory(&)
@factory.class_exec(&)
end
|
#define_feature(feature_name, context, bodies) ⇒ Object
Also known as:
feature
32
33
34
35
36
37
38
39
40
|
# File 'lib/rggen/core/builder/list_feature_entry.rb', line 32
def define_feature(feature_name, context, bodies)
feature = @features[feature_name] = Class.new(@base_feature)
if context
feature.method_defined?(:shared_context) &&
(raise BuilderError.new('shared context has already been set'))
attach_shared_context(context, feature)
end
eval_feature_bodies(feature, feature_name, bodies)
end
|
#delete(features = nil) ⇒ Object
57
58
59
60
61
62
63
|
# File 'lib/rggen/core/builder/list_feature_entry.rb', line 57
def delete(features = nil)
if features
Array(features).each { |feature| @features.delete(feature) }
else
@features.clear
end
end
|
#feature?(feature) ⇒ Boolean
65
66
67
|
# File 'lib/rggen/core/builder/list_feature_entry.rb', line 65
def feature?(feature)
@features.key?(feature)
end
|
69
70
71
|
# File 'lib/rggen/core/builder/list_feature_entry.rb', line 69
def features
@features.keys
end
|
#modify_feature(feature_name, bodies) ⇒ Object
44
45
46
47
48
|
# File 'lib/rggen/core/builder/list_feature_entry.rb', line 44
def modify_feature(feature_name, bodies)
@features.key?(feature_name) ||
(raise BuilderError.new("unknown feature: #{feature_name}"))
eval_feature_bodies(@features[feature_name], feature_name, bodies)
end
|
#setup(base_feature, base_factory, context) ⇒ Object
14
15
16
17
18
|
# File 'lib/rggen/core/builder/list_feature_entry.rb', line 14
def setup(base_feature, base_factory, context)
@base_feature = Class.new(base_feature)
@factory = Class.new(base_factory)
attach_shared_context(context, @base_feature, @factory, self)
end
|