Module: SetBuilder::Modifier
- Defined in:
- lib/set_builder/modifier.rb,
lib/set_builder/modifier/base.rb,
lib/set_builder/modifier/verb.rb,
lib/set_builder/modifier/adverb.rb
Defined Under Namespace
Classes: Adverb, Base, Verb
Class Method Summary
collapse
Class Method Details
.[](klass_or_symbol) ⇒ Object
.for(type) ⇒ Object
29
30
31
32
|
# File 'lib/set_builder/modifier.rb', line 29
def self.for(type)
type = get_type(type)
@registered_modifiers[type] || raise(ArgumentError, "A modifier has not been registered for #{type}")
end
|
.name(klass) ⇒ Object
20
21
22
23
24
25
|
# File 'lib/set_builder/modifier.rb', line 20
def self.name(klass)
@registered_modifiers.each do |key, value|
return key if (value == klass)
end
klass.name
end
|
.register(*args) ⇒ Object
Usage
register(type, modifier)
register([type, modifier], [type, modifier])
register(type, modifier, type, modifier)
48
49
50
51
52
53
54
55
56
|
# File 'lib/set_builder/modifier.rb', line 48
def self.register(*args)
args, i = args.flatten, 0
while args[i+1]
type, modifier_klass = get_type(args[i]), args[i+1]
valid_modifier!(modifier_klass) @registered_modifiers[type] = modifier_klass
i += 2
end
end
|
.registered?(klass) ⇒ Boolean
14
15
16
|
# File 'lib/set_builder/modifier.rb', line 14
def self.registered?(klass)
@registered_modifiers.values.member?(klass)
end
|
.valid_modifier!(klass) ⇒ Object
60
61
62
63
64
65
|
# File 'lib/set_builder/modifier.rb', line 60
def self.valid_modifier!(klass)
raise(ArgumentError, "#{klass} must inherit from either `SetBuilder::Modifier::Verb` or `SetBuilder::Modifier::Adverb`") unless (is_subclass_of?(klass, SetBuilder::Modifier::Adverb) or is_subclass_of?(klass, SetBuilder::Modifier::Verb))
raise(ArgumentError, "#{klass} must respond to `operators`") unless klass.respond_to?(:operators)
raise(ArgumentError, "#{klass}.operators must not be empty") if klass.operators.empty?
klass
end
|