class FactoryTrace::Writers::ReportWriter
Constants
- CODES
- COLORS
Public Instance Methods
write(results)
click to toggle source
@param [Array<Hash>] results
# File lib/factory_trace/writers/report_writer.rb, line 17 def write(results) total_color = results.any? { |result| result[:code] == :unused && !result.key?(:value) } ? :red : :green results.each do |result| io.puts(convert(result, total_color: total_color)) end end
Private Instance Methods
append_definition_path(result) { || ... }
click to toggle source
# File lib/factory_trace/writers/report_writer.rb, line 48 def append_definition_path(result) msg = yield return msg unless configuration.trace_definition? && result[:definition_path] "#{msg} => #{result[:definition_path]}" end
colorize(color, msg)
click to toggle source
# File lib/factory_trace/writers/report_writer.rb, line 42 def colorize(color, msg) return msg unless configuration.color "#{COLORS[color]}#{msg}\e[0m" end
convert(result, total_color:)
click to toggle source
@param [Hash<Symbol, Object>] result @param [Symbol] total_color
# File lib/factory_trace/writers/report_writer.rb, line 29 def convert(result, total_color:) case when result[:value] colorize(total_color, "total number of unique #{humanize_code(result[:code])} factories & traits: #{result[:value]}") when result[:factory_names] && result[:trait_name] append_definition_path(result) { "#{humanize_code(result[:code])} trait #{colorize(:blue, result[:trait_name])} of factory #{list(result[:factory_names])}" } when result[:factory_names] append_definition_path(result) { "#{humanize_code(result[:code])} factory #{list(result[:factory_names])}" } else append_definition_path(result) { "#{humanize_code(result[:code])} global trait #{colorize(:blue, result[:trait_name])}" } end end
humanize_code(code)
click to toggle source
# File lib/factory_trace/writers/report_writer.rb, line 55 def humanize_code(code) CODES[code] end
list(elements, color: :blue)
click to toggle source
# File lib/factory_trace/writers/report_writer.rb, line 59 def list(elements, color: :blue) elements.map { |element| colorize(color, element) }.join(', ') end