Class: AnnotateRb::ModelAnnotator::ColumnAnnotation::AnnotationBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/annotate_rb/model_annotator/column_annotation/annotation_builder.rb

Instance Method Summary collapse

Constructor Details

#initialize(column, model, max_size, options) ⇒ AnnotationBuilder



7
8
9
10
11
12
# File 'lib/annotate_rb/model_annotator/column_annotation/annotation_builder.rb', line 7

def initialize(column, model, max_size, options)
  @column = column
  @model = model
  @max_size = max_size
  @options = options
end

Instance Method Details

#buildObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/annotate_rb/model_annotator/column_annotation/annotation_builder.rb', line 14

def build
  column_attributes = @model.built_attributes[@column.name]
  formatted_column_type = TypeBuilder.new(@column, @options, @model.column_defaults).build

  display_column_comments = @options[:with_comment] && @options[:with_column_comments]
  display_column_comments &&= @model.with_comments? && @column.comment
  position_of_column_comment = @options[:position_of_column_comment] || Options::FLAG_OPTIONS[:position_of_column_comment] if display_column_comments

  max_attributes_size = @model.built_attributes.values.map { |v| v.join(", ").length }.max

  _component = ColumnComponent.new(
    column: @column,
    max_name_size: @max_size,
    type: formatted_column_type,
    attributes: column_attributes,
    position_of_column_comment: position_of_column_comment,
    max_attributes_size: max_attributes_size
  )
end