@@ -18,6 +18,7 @@ def run(self,
18
18
file ,
19
19
use_spaces : bool ,
20
20
allow_trailing_whitespace : bool = False ,
21
+ allow_leading_blanklines : bool = False ,
21
22
indent_size : int = SpacingHelper .DEFAULT_TAB_WIDTH ,
22
23
enforce_newline_at_EOF : bool = True ,
23
24
):
@@ -34,13 +35,58 @@ def run(self,
34
35
Number of spaces per indentation level.
35
36
:param enforce_newline_at_EOF:
36
37
Whether to enforce a newline at the End Of File.
38
+ :param allow_leading_blanklines:
39
+ Whether to allow leading blank lines at the start
40
+ of file or not.
37
41
'''
38
42
spacing_helper = SpacingHelper (indent_size )
39
43
result_texts = []
40
44
additional_info_texts = []
41
45
42
- for line_number , line in enumerate (file , start = 1 ):
43
- replacement = line
46
+ def end_blanklines ():
47
+ end_line = False
48
+ enumerated_zip_obj = zip (range (1 , len (file ) + 1 ),
49
+ file )
50
+ enumerated_tuple = tuple (enumerated_zip_obj )
51
+
52
+ for line_number , line in enumerated_tuple :
53
+ if replacement .strip () == '' :
54
+ end_line = line_number
55
+ else :
56
+ break
57
+
58
+ return end_line
59
+
60
+ if allow_leading_blanklines :
61
+ start_line_of_file = 1
62
+
63
+ else :
64
+ end_blanklines = end_blanklines ()
65
+ start_line_of_file = 1
66
+ if end_blanklines :
67
+ start_line_of_file = end_blanklines + 1
68
+ result_texts .append ('Leading blank lines.' )
69
+ additional_info_texts .append (
70
+ 'Your source code contains leading blank lines.'
71
+ 'Those usually have no meaning. Please consider '
72
+ 'removing them.' )
73
+ diff = Diff (file )
74
+ diff .delete_lines (1 , end_blanklines )
75
+ inconsistencies = '' .join ('\n - ' + string
76
+ for string in result_texts )
77
+ yield Result .from_values (
78
+ self ,
79
+ 'Line contains following spacing inconsistencies:'
80
+ + inconsistencies ,
81
+ diffs = {filename : diff },
82
+ file = filename ,
83
+ additional_info = '\n \n ' .join (additional_info_texts ))
84
+ result_texts = []
85
+ additional_info_texts = []
86
+
87
+ for line_number , line in enumerate (file [start_line_of_file - 1 :],
88
+ start = start_line_of_file ):
89
+ replacement = line
44
90
45
91
if enforce_newline_at_EOF :
46
92
# Since every line contains at the end at least one \n, only
0 commit comments