Class: Riffer::Evals::Evaluators::Repository

Inherits:
Object
  • Object
show all
Defined in:
lib/riffer/evals/evaluators.rb

Overview

Repository for looking up evaluators by identifier.

Built-in evaluators are always available. Custom evaluators can be registered using Repository.register in your app initialization.

# Register a custom evaluator (config/initializers/riffer.rb)
Riffer::Evals::Evaluators::Repository.register(:my_evaluator, MyEvaluator)

# Find an evaluator
Riffer::Evals::Evaluators::Repository.find(:answer_relevancy)
# => Riffer::Evals::Evaluators::AnswerRelevancy

Constant Summary collapse

BUILT_IN =

Built-in evaluators (always available).

{
  answer_relevancy: -> { Riffer::Evals::Evaluators::AnswerRelevancy }
}.freeze

Class Method Summary collapse

Class Method Details

.allObject

Returns all registered evaluators (built-in and custom).

: () -> Hash[Symbol, singleton(Riffer::Evals::Evaluator)]



47
48
49
# File 'lib/riffer/evals/evaluators.rb', line 47

def all
  BUILT_IN.merge(@custom).transform_values(&:call)
end

.clearObject

Clears custom registrations (for testing). Built-ins remain.

: () -> void



54
55
56
# File 'lib/riffer/evals/evaluators.rb', line 54

def clear
  @custom = {}
end

.find(identifier) ⇒ Object

Finds an evaluator class by identifier.

: ((String | Symbol)) -> singleton(Riffer::Evals::Evaluator)?



39
40
41
42
# File 'lib/riffer/evals/evaluators.rb', line 39

def find(identifier)
  id = identifier.to_sym
  (@custom[id] || BUILT_IN[id])&.call
end

.register(identifier, evaluator_class) ⇒ Object

Registers a custom evaluator class with an identifier.

: ((String | Symbol), singleton(Riffer::Evals::Evaluator)) -> void



32
33
34
# File 'lib/riffer/evals/evaluators.rb', line 32

def register(identifier, evaluator_class)
  @custom[identifier.to_sym] = -> { evaluator_class }
end