Class: Shokkenki::Term::TermFactory

Inherits:
Object
  • Object
show all
Defined in:
lib/shokkenki/term/term_factory.rb

Class Method Summary collapse

Class Method Details

.factoriesObject



14
15
16
17
18
19
20
21
# File 'lib/shokkenki/term/term_factory.rb', line 14

def self.factories
  @factories ||= [
    StringTerm, HashTerm, RegexpTerm, NumberTerm, JsonPathsTerm, DateTerm, DateTimeTerm
    ].inject({}) do |h, term|
      h[term.type] = term
      h
    end
end

.factory_for(type) ⇒ Object



23
24
25
26
# File 'lib/shokkenki/term/term_factory.rb', line 23

def self.factory_for type
  raise 'There is no term type' unless type
  factories[type.to_s.downcase.to_sym] || raise("Term of type '#{type}' is not recognised. Have you registered a factory for it?")
end

.from_json(json) ⇒ Object



32
33
34
35
# File 'lib/shokkenki/term/term_factory.rb', line 32

def self.from_json json
  symbolized_json = json.symbolize_keys
  factory_for(symbolized_json[:type]).from_json symbolized_json
end

.register(type, factory) ⇒ Object



28
29
30
# File 'lib/shokkenki/term/term_factory.rb', line 28

def self.register type, factory
  factories[type.to_s.downcase.to_sym] = factory
end