Module: SolidAgent::ModelNaming
- Defined in:
- lib/solid_agent/model_naming.rb
Overview
The one place that knows how a context class name maps to its message and generation class names.
Two callers derive these names — HasContext#infer_class_names at runtime and the context generator when writing files — and they used to implement the rule independently, which is how they drifted.
Constant Summary collapse
- CONTEXT_SUFFIXES =
Suffixes a context class may end with. Only the first match is stripped: chaining
delete_suffixreduces "SessionContext" to "" and produces a bare "Message"/"Generation" pair that collides across every context. %w[Context Session].freeze
Class Method Summary collapse
-
.base_for(class_name) ⇒ String
The stem a context class name contributes to its siblings.
- .generation_class_for(class_name) ⇒ String
- .message_class_for(class_name) ⇒ String
Class Method Details
.base_for(class_name) ⇒ String
The stem a context class name contributes to its siblings.
26 27 28 29 30 31 |
# File 'lib/solid_agent/model_naming.rb', line 26 def base_for(class_name) name = class_name.to_s suffix = CONTEXT_SUFFIXES.find { |candidate| name.end_with?(candidate) && name != candidate } suffix ? name.delete_suffix(suffix) : name end |
.generation_class_for(class_name) ⇒ String
39 |
# File 'lib/solid_agent/model_naming.rb', line 39 def generation_class_for(class_name) = "#{base_for(class_name)}Generation" |
.message_class_for(class_name) ⇒ String
35 |
# File 'lib/solid_agent/model_naming.rb', line 35 def (class_name) = "#{base_for(class_name)}Message" |