module MysqlCasualExplain::PrettyPrinter
Constants
- BOLD
- CLEAR
- RED
Public Instance Methods
pp(result, elapsed)
click to toggle source
# File lib/mysql_casual_explain/pretty_printer.rb, line 9 def pp(result, elapsed) widths = compute_column_widths(result) separator = build_separator(widths) pp = [] pp << separator pp << build_cells(result.columns, result.columns, widths) pp << separator result.rows.each do |row| pp << build_cells(result.columns, row, widths) end pp << separator pp << build_footer(result.rows.length, elapsed) "#{pp.join("\n")}\n" end
Private Instance Methods
_colorize_items(columns, items, widths)
click to toggle source
# File lib/mysql_casual_explain/pretty_printer.rb, line 36 def _colorize_items(columns, items, widths) columns = columns.map(&:downcase).map(&:to_sym) item_by_column = columns.zip(items).to_h warnings_by_column = MysqlCasualExplain.warnings_by_column new_items = [] new_widths = [] extra_len = "#{BOLD}#{RED}#{CLEAR}".length item_by_column.each_with_index do |(column, item), i| item = 'NULL' if item.nil? warnings = warnings_by_column.fetch(column, []) if warnings.any? { |w| w.call(item) } new_items << "#{BOLD}#{RED}#{item}#{CLEAR}" new_widths << widths[i] + extra_len else new_items << item new_widths << widths[i] end end [new_items, new_widths] end
build_cells(columns, items, widths)
click to toggle source
Calls superclass method
# File lib/mysql_casual_explain/pretty_printer.rb, line 31 def build_cells(columns, items, widths) items, widths = _colorize_items(columns, items, widths) if items.first != 'id' super(items, widths) end