@@ -19,23 +19,26 @@ def check
1919
2020 def fix ( problem )
2121 token = problem [ :token ]
22- remove_token ( token )
2322
24- # remove any excessive whitespace on the line
25- temp_token = token . prev_code_token
26- while ( temp_token = temp_token . next_token )
27- remove_token ( temp_token ) if whitespace? ( temp_token )
28- break if temp_token . type == :NEWLINE
23+ prev_code_token = token . prev_code_token
24+ next_code_token = token . next_code_token
25+ indent_token = prev_code_token . prev_token_of ( :INDENT )
26+
27+ # Delete all tokens between the two code tokens the anchor is between
28+ temp_token = prev_code_token
29+ while ( temp_token = temp_token . next_token ) && ( temp_token != next_code_token )
30+ remove_token ( temp_token ) unless temp_token == token
2931 end
3032
31- index = tokens . index ( token . next_code_token )
32- add_token ( index , token )
33+ # Insert a newline and an indent before the arrow
34+ index = tokens . index ( token )
35+ newline_token = PuppetLint ::Lexer ::Token . new ( :NEWLINE , "\n " , token . line , 0 )
36+ add_token ( index , newline_token )
37+ add_token ( index + 1 , indent_token ) if indent_token
3338
34- whitespace_token = PuppetLint ::Lexer ::Token . new ( :WHITESPACE , ' ' , temp_token . line + 1 , 3 )
39+ # Insert a space between the arrow and the following code token
40+ index = tokens . index ( token )
41+ whitespace_token = PuppetLint ::Lexer ::Token . new ( :WHITESPACE , ' ' , token . line , 3 )
3542 add_token ( index + 1 , whitespace_token )
3643 end
37-
38- def whitespace? ( token )
39- Set [ :INDENT , :WHITESPACE ] . include? ( token . type )
40- end
4144end
0 commit comments