Class: RailsAiBridge::Tools::ModelDetails::StandardFormatter

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_ai_bridge/tools/model_details/standard_formatter.rb

Overview

Renders ActiveRecord model names with association and validation counts (and optional tier).

Instance Method Summary collapse

Constructor Details

#initialize(models:, non_ar_models: nil) ⇒ StandardFormatter

Returns a new instance of StandardFormatter.

Parameters:

  • models (Hash{String => Hash})

    payloads may include +:associations+, +:validations+, +:semantic_tier+, +:error+

  • non_ar_models (Hash, nil) (defaults to: nil)

    optional +:non_ar_models+ section; appended via NonArModelsAppendix



10
11
12
13
# File 'lib/rails_ai_bridge/tools/model_details/standard_formatter.rb', line 10

def initialize(models:, non_ar_models: nil)
  @models = models
  @non_ar_models = non_ar_models
end

Instance Method Details

#callString

Builds Markdown with header # Models (N) and one line per non-errored model, plus optional POJO appendix.

Returns:

  • (String)

    Markdown document



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/rails_ai_bridge/tools/model_details/standard_formatter.rb', line 18

def call
  lines = ["# Models (#{@models.size})", '']

  @models.keys.sort.each do |name|
    data = @models[name]
    next if data[:error]

    assoc_count = (data[:associations] || []).size
    val_count   = (data[:validations] || []).size
    line = "- **#{name}**"
    line += " — tier: #{data[:semantic_tier]}" if data[:semantic_tier].present?
    line += "#{assoc_count} associations, #{val_count} validations" if assoc_count.positive? || val_count.positive?
    lines << line
  end

  lines << '' << '_Use `model:"Name"` for full detail, or `detail:"full"` for association lists._'
  lines.join("\n") + NonArModelsAppendix.append_markdown(@non_ar_models)
end