@@ -112,27 +112,30 @@ def _compute_sims(self):
112112
113113 def _display_sims (self , similarities : List [Tuple ]) -> None :
114114 """Display computed similarities on stdout"""
115- duplicated_line_number = 0
115+ report = self ._get_similarity_report (similarities )
116+ print (report )
117+
118+ def _get_similarity_report (self , similarities : List [Tuple ]) -> str :
119+ """Create a report from similarities"""
120+ report : str = ""
121+ duplicated_line_number : int = 0
116122 for number , files in similarities :
117- print ()
118- print (number , "similar lines in" , len (files ), "files" )
123+ report += f"\n { number } similar lines in { len (files )} files\n "
119124 files = sorted (files )
120- lineset = idx = None
121- for lineset , idx in files :
122- print ( f"=={ lineset .name } :{ idx } " )
123- if lineset :
124- for line in lineset ._real_lines [idx : idx + number ]:
125- print ( " " , line .rstrip ())
125+ line_set = idx = None
126+ for line_set , idx in files :
127+ report += f"=={ line_set .name } :{ idx } \n "
128+ if line_set :
129+ for line in line_set ._real_lines [idx : idx + number ]:
130+ report += f" { line .rstrip ()} \n "
126131 duplicated_line_number += number * (len (files ) - 1 )
127- total_line_number = sum (len (lineset ) for lineset in self .linesets )
128- print (
129- "TOTAL lines=%s duplicates=%s percent=%.2f"
130- % (
131- total_line_number ,
132- duplicated_line_number ,
133- duplicated_line_number * 100.0 / total_line_number ,
134- )
132+ total_line_number : int = sum (len (lineset ) for lineset in self .linesets )
133+ report += "TOTAL lines={} duplicates={} percent={:.2f}\n " .format (
134+ total_line_number ,
135+ duplicated_line_number ,
136+ duplicated_line_number * 100.0 / total_line_number ,
135137 )
138+ return report
136139
137140 def _find_common (self , lineset1 , lineset2 ):
138141 """find similarities in the two given linesets"""
0 commit comments