Class: Shokkenki::Term::TermFactory
- Defined in:
- lib/shokkenki/term/term_factory.rb
Class Method Summary collapse
- .factories ⇒ Object
- .factory_for(type) ⇒ Object
- .from_json(json) ⇒ Object
- .register(type, factory) ⇒ Object
Class Method Details
.factories ⇒ Object
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 |