class Tdc::ExtendedAttributes::InterpreterRegistry

Knows the class instances that interpret extended attribute values.

Public Class Methods

new() click to toggle source
# File lib/tdc/extended_attributes/interpreter_registry.rb, line 13
def initialize
  @interpreters = []
end
register(interpreter:) click to toggle source
# File lib/tdc/extended_attributes/interpreter_registry.rb, line 9
def self.register(interpreter:)
  instance.register_interpreter(interpreter)
end

Public Instance Methods

clear() click to toggle source
# File lib/tdc/extended_attributes/interpreter_registry.rb, line 17
def clear
  @interpreters = []
end
interpreters() click to toggle source
# File lib/tdc/extended_attributes/interpreter_registry.rb, line 21
def interpreters
  @interpreters.empty? ? [default_interpreter] : @interpreters
end
register_interpreter(interpreter) click to toggle source
# File lib/tdc/extended_attributes/interpreter_registry.rb, line 25
      def register_interpreter(interpreter)
        raise Tdc::FatalError, <<~MSG.chomp unless interpreter.is_a?(Tdc::ExtendedAttributes::InterpreterBase)
          Cannot register an interpreter unless it inherits from Tdc::ExtendedAttributes::InterpreterBase
        MSG

        # Avoid registering the same class of interpreter a second time.
        return if @interpreters.map(&:class).include?(interpreter.class)

        @interpreters << interpreter
      end

Private Instance Methods

default_interpreter() click to toggle source
# File lib/tdc/extended_attributes/interpreter_registry.rb, line 38
def default_interpreter
  @_default_interpreter ||= Tdc::ExtendedAttributes::DefaultInterpreter.new
end