Class: FixedWidthFileValidator::TextReportFormatter

Inherits:
Object
  • Object
show all
Defined in:
lib/fixed_width_file_validator/report_formatter.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args = {}) ⇒ TextReportFormatter

Returns a new instance of TextReportFormatter.



7
8
9
# File 'lib/fixed_width_file_validator/report_formatter.rb', line 7

def initialize(args = {})
  @line_no_width = args[:line_no_width] || 5
end

Instance Attribute Details

#line_no_widthObject

Returns the value of attribute line_no_width.



5
6
7
# File 'lib/fixed_width_file_validator/report_formatter.rb', line 5

def line_no_width
  @line_no_width
end

Instance Method Details

#write(err, file = $stderr) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
# File 'lib/fixed_width_file_validator/report_formatter.rb', line 11

def write(err, file = $stderr)
  return if err.nil?

  line_prefix = format("%0#{line_no_width}i:", err.line_num)
  marker = line_prefix + ' ' * (err.pos - 1) + '^' * err.width
  message = line_prefix + ' ' * (err.pos - 1) + "field #{err.failed_field} does not satisfy #{err.failed_validation}"
  file.puts line_prefix + err.raw.chop
  file.puts marker
  file.puts message
  file.puts
end

#write_unique_errors(errors, file = $stderr) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/fixed_width_file_validator/report_formatter.rb', line 23

def write_unique_errors(errors, file = $stderr)
  return if errors.empty?

  err = errors.first
  pos = err.pos - 1
  width = err.width
  line_prefix = format("%0#{line_no_width}i:", err.line_num)

  errors.each { |e| file.puts line_prefix + e.raw.chop }
  file.puts line_prefix + ' ' * pos + '^' * width
  file.puts line_prefix + ' ' * pos + "field #{err.failed_field} is not #{err.failed_validation}"
end