Class: ClassMetrix::Formatters::Shared::TableBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/class_metrix/formatters/shared/table_builder.rb

Direct Known Subclasses

CsvTableBuilder, MarkdownTableBuilder

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data, expand_hashes = false, options = {}) ⇒ TableBuilder

Returns a new instance of TableBuilder.



12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/class_metrix/formatters/shared/table_builder.rb', line 12

def initialize(data, expand_hashes = false, options = {})
  @data = data
  @expand_hashes = expand_hashes
  @options = options
  @value_processor = ValueProcessor
  @debug_mode = options.fetch(:debug_mode, false)
  @debug_level = options.fetch(:debug_level, :basic)
  @logger = Utils::DebugLogger.new("TableBuilder", @debug_mode, @debug_level)

  @logger.log("TableBuilder initialized with expand_hashes: #{expand_hashes}")
  @logger.log("Data headers: #{@data[:headers]}", :detailed)
  @logger.log("Number of rows: #{@data[:rows]&.length || 0}")
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



10
11
12
# File 'lib/class_metrix/formatters/shared/table_builder.rb', line 10

def data
  @data
end

#expand_hashesObject (readonly)

Returns the value of attribute expand_hashes.



10
11
12
# File 'lib/class_metrix/formatters/shared/table_builder.rb', line 10

def expand_hashes
  @expand_hashes
end

#optionsObject (readonly)

Returns the value of attribute options.



10
11
12
# File 'lib/class_metrix/formatters/shared/table_builder.rb', line 10

def options
  @options
end

Instance Method Details

#build_expanded_tableObject



33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/class_metrix/formatters/shared/table_builder.rb', line 33

def build_expanded_table
  return build_simple_table unless @expand_hashes

  @logger.log("Building expanded table with hash expansion")
  headers = @data[:headers]
  rows = process_rows_for_expansion(headers)

  {
    headers: headers,
    rows: rows
  }
end

#build_flattened_tableObject



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/class_metrix/formatters/shared/table_builder.rb', line 46

def build_flattened_table
  return build_simple_table unless @expand_hashes

  @logger.log("Building flattened table with hash expansion")
  headers = @data[:headers]
  all_hash_keys = collect_all_hash_keys(@data[:rows], headers)
  @logger.log("Collected hash keys: #{all_hash_keys}")

  flattened_headers = create_flattened_headers(headers, all_hash_keys)
  flattened_rows = create_flattened_rows(@data[:rows], headers, all_hash_keys)

  {
    headers: flattened_headers,
    rows: flattened_rows
  }
end

#build_simple_tableObject



26
27
28
29
30
31
# File 'lib/class_metrix/formatters/shared/table_builder.rb', line 26

def build_simple_table
  {
    headers: @data[:headers],
    rows: @data[:rows].map { |row| process_row(row) }
  }
end