Class: DontRepeatYourself::DefaultFormatter

Inherits:
Object
  • Object
show all
Defined in:
lib/dont_repeat_yourself/formatter.rb

Direct Known Subclasses

HTMLFormatter, NetbeansFormatter

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(snippet_extractor, simian_results) ⇒ DefaultFormatter

Inject dependency thtough



22
23
24
25
# File 'lib/dont_repeat_yourself/formatter.rb', line 22

def initialize(snippet_extractor, simian_results)
  @snippet_extractor = snippet_extractor
  @simian_results = simian_results
end

Instance Attribute Details

#simian_resultsObject (readonly)

Returns the value of attribute simian_results.



19
20
21
# File 'lib/dont_repeat_yourself/formatter.rb', line 19

def simian_results
  @simian_results
end

Instance Method Details

#format_duplicate_lines_snippet(block) ⇒ Object



53
54
55
56
# File 'lib/dont_repeat_yourself/formatter.rb', line 53

def format_duplicate_lines_snippet(block)
  snippet = "Duplicate lines:\n"      
  snippet << @snippet_extractor.plain_source_code(block.line_number_of_first_duplicate_line, block.line_number_of_last_duplicate_line, block.file_path)
end

#format_sentence_between_lines_x_and_y_in_filepath(block) ⇒ Object

Default, return the sentence



49
50
51
# File 'lib/dont_repeat_yourself/formatter.rb', line 49

def format_sentence_between_lines_x_and_y_in_filepath(block)
  block.sentence_between_lines_x_and_y_in_filepath 
end

#reportObject



27
28
29
# File 'lib/dont_repeat_yourself/formatter.rb', line 27

def report
  report_body.gsub(/TWO_SPACE_CHARS/, "  ")      
end

#report_bodyObject

Protected methods to be used by formatters

protected


34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/dont_repeat_yourself/formatter.rb', line 34

def report_body
  body = ""
  body << @simian_results.sentence_processed_a_total_of_x_significant_lines_in_y_files << "\n"
  body << @simian_results.sentence_found_x_duplicate_lines_in_y_blocks_in_z_files << "\n\n"      
  @simian_results.sets.each{|set|
    body << set.sentence_found_x_duplicate_lines_in_the_following_files << "\n"        
    set.blocks.each{ |block|
      body << "TWO_SPACE_CHARS" << format_sentence_between_lines_x_and_y_in_filepath(block) << "\n"          
    }
    body << "TWO_SPACE_CHARS" << format_duplicate_lines_snippet(set.blocks.last) << "\n"         
  }
  body
end