Class: Valise::Strategies::Set

Inherits:
Object
  • Object
show all
Defined in:
lib/valise/strategies/set.rb

Direct Known Subclasses

MergeDiff, Serialization

Class Method Summary collapse

Class Method Details

.[](index) ⇒ Object



25
26
27
# File 'lib/valise/strategies/set.rb', line 25

def [](index)
  classes[index]
end

.check!(type) ⇒ Object



41
42
43
44
45
# File 'lib/valise/strategies/set.rb', line 41

def check!(type)
  classes.fetch(type)
rescue KeyError
  raise Errors::UnregisteredStrategy.new(self.name, type)
end

.classesObject



17
18
19
# File 'lib/valise/strategies/set.rb', line 17

def classes
  root_class{@classes ||= {}}
end

.defaultObject



37
38
39
# File 'lib/valise/strategies/set.rb', line 37

def default
  set_default(self)
end

.instance(type, options = nil) ⇒ Object



47
48
49
# File 'lib/valise/strategies/set.rb', line 47

def instance(type, options = nil)
  instances[[type, options]] ||= classes[type].new(options)
end

.instancesObject



21
22
23
# File 'lib/valise/strategies/set.rb', line 21

def instances
  root_class{@instances ||= {}}
end

.register(index) ⇒ Object



29
30
31
# File 'lib/valise/strategies/set.rb', line 29

def register(index)
  classes[index] = self
end

.root_class(&block) ⇒ Object



7
8
9
10
11
12
13
14
15
# File 'lib/valise/strategies/set.rb', line 7

def root_class(&block)
  if superclass == Valise::Strategies::Set
    instance_eval(&block)
  elsif self == Valise::Strategies::Set
    raise "Complete class hierarchy fail"
  else
    superclass.root_class(&block)
  end
end

.set_default(klass) ⇒ Object



33
34
35
# File 'lib/valise/strategies/set.rb', line 33

def set_default(klass)
  classes.default = klass
end