Class: RailsAiBridge::Serializers::Providers::Collaborators::ModelLineFormatter
- Inherits:
-
Object
- Object
- RailsAiBridge::Serializers::Providers::Collaborators::ModelLineFormatter
- Defined in:
- lib/rails_ai_bridge/serializers/providers/collaborators/model_line_formatter.rb
Overview
Formats individual model lines with complexity metadata for AI context documents. Extracts and formats associations, validations, enums, columns, and migration status.
This collaborator handles the complex formatting logic for model entries, providing consistent output across different AI assistant providers. It delegates migration recency checking to ContextSummary for DRY compliance.
Defined Under Namespace
Classes: AssociationValidationCounts, FormattedColumn, FormattedColumns, FormattingContext, ModelColumns
Class Method Summary collapse
-
.association_count_section(data) ⇒ String
Builds association and validation count section (class method).
-
.columns_section(data, schema_tables) ⇒ String
Builds columns section with top columns and types (class method).
-
.extract_enum_names(enum_data) ⇒ Array<String>
Extracts enum names from enum data (class method).
-
.format_association(association) ⇒ String
Formats a single association using Ruby 3.2 pattern matching (class method).
-
.migration_section(data, migrations) ⇒ String
Builds migration section with recently migrated flag (class method).
Instance Method Summary collapse
-
#format_line(name, data) ⇒ String
Formats a single model line with complexity metadata for AI context documents.
-
#initialize(context) ⇒ ModelLineFormatter
constructor
A new instance of ModelLineFormatter.
Constructor Details
#initialize(context) ⇒ ModelLineFormatter
Returns a new instance of ModelLineFormatter.
26 27 28 29 30 |
# File 'lib/rails_ai_bridge/serializers/providers/collaborators/model_line_formatter.rb', line 26 def initialize(context) raise ArgumentError, "Context must be a Hash, got #{context.class}" unless context.is_a?(Hash) @context = context end |
Class Method Details
.association_count_section(data) ⇒ String
Builds association and validation count section (class method)
190 191 192 |
# File 'lib/rails_ai_bridge/serializers/providers/collaborators/model_line_formatter.rb', line 190 def association_count_section(data) AssociationValidationCounts.new(data).to_section end |
.columns_section(data, schema_tables) ⇒ String
Builds columns section with top columns and types (class method)
209 210 211 |
# File 'lib/rails_ai_bridge/serializers/providers/collaborators/model_line_formatter.rb', line 209 def columns_section(data, schema_tables) ModelColumns.new(data, schema_tables).to_section end |
.extract_enum_names(enum_data) ⇒ Array<String>
Extracts enum names from enum data (class method)
197 198 199 200 201 202 203 |
# File 'lib/rails_ai_bridge/serializers/providers/collaborators/model_line_formatter.rb', line 197 def extract_enum_names(enum_data) return [] unless enum_data.is_a?(Hash) enum_data.filter_map do |name, values| name if name && values.present? end end |
.format_association(association) ⇒ String
Formats a single association using Ruby 3.2 pattern matching (class method)
227 228 229 230 231 232 233 234 235 |
# File 'lib/rails_ai_bridge/serializers/providers/collaborators/model_line_formatter.rb', line 227 def format_association(association) return '' unless association.is_a?(Hash) type = association[:type] name = association[:name] return '' if type.to_s.empty? || name.to_s.empty? "#{type} :#{name}" end |
.migration_section(data, migrations) ⇒ String
Builds migration section with recently migrated flag (class method)
217 218 219 220 221 222 |
# File 'lib/rails_ai_bridge/serializers/providers/collaborators/model_line_formatter.rb', line 217 def migration_section(data, migrations) table_name = data[:table_name] return '' unless table_name && ContextSummary.recently_migrated?(table_name, migrations) ' [recently migrated]' end |
Instance Method Details
#format_line(name, data) ⇒ String
Formats a single model line with complexity metadata for AI context documents.
This is the main public interface that validates input and orchestrates the complete formatting process. It extracts schema and migration data from the context and delegates to the core formatting method.
The formatted line includes:
- Model name in bold
- Association and validation counts (if present)
- Enum names (if present)
- Top 3 columns with types (if present)
- Recently migrated flag (if applicable)
- Top 3 associations (if present)
73 74 75 76 77 78 |
# File 'lib/rails_ai_bridge/serializers/providers/collaborators/model_line_formatter.rb', line 73 def format_line(name, data) raise ArgumentError, 'Model name cannot be nil' unless name raise ArgumentError, "Model data must be a Hash, got #{data.class}" unless data.is_a?(Hash) format_model_line(name, FormattingContext.from(data, @context)) end |