@@ -881,6 +881,7 @@ def visit_interpolated_x_string_node(node)
881
881
# Visit the interpolated content of the string-like node.
882
882
private def visit_interpolated_parts ( parts )
883
883
visited = [ ]
884
+
884
885
parts . each do |part |
885
886
result = visit ( part )
886
887
@@ -892,6 +893,7 @@ def visit_interpolated_x_string_node(node)
892
893
else
893
894
visited << result
894
895
end
896
+ visited << :space
895
897
elsif result [ 0 ] == :dstr
896
898
if !visited . empty? && part . parts [ 0 ] . is_a? ( StringNode )
897
899
# If we are in the middle of an implicitly concatenated string,
@@ -907,8 +909,9 @@ def visit_interpolated_x_string_node(node)
907
909
end
908
910
909
911
state = :beginning #: :beginning | :string_content | :interpolated_content
912
+ results = [ ]
910
913
911
- visited . each_with_object ( [ ] ) do |result , results |
914
+ visited . each_with_index do |result , index |
912
915
case state
913
916
when :beginning
914
917
if result . is_a? ( String )
@@ -923,7 +926,9 @@ def visit_interpolated_x_string_node(node)
923
926
state = :interpolated_content
924
927
end
925
928
when :string_content
926
- if result . is_a? ( String )
929
+ if result == :space
930
+ # continue
931
+ elsif result . is_a? ( String )
927
932
results [ 0 ] << result
928
933
elsif result . is_a? ( Array ) && result [ 0 ] == :str
929
934
results [ 0 ] << result [ 1 ]
@@ -932,14 +937,18 @@ def visit_interpolated_x_string_node(node)
932
937
state = :interpolated_content
933
938
end
934
939
when :interpolated_content
935
- if result . is_a? ( Array ) && result [ 0 ] == :str && results [ -1 ] [ 0 ] == :str && ( results [ -1 ] . line_max == result . line )
940
+ if result == :space
941
+ # continue
942
+ elsif visited [ index - 1 ] != :space && result . is_a? ( Array ) && result [ 0 ] == :str && results [ -1 ] [ 0 ] == :str && ( results [ -1 ] . line_max == result . line )
936
943
results [ -1 ] [ 1 ] << result [ 1 ]
937
944
results [ -1 ] . line_max = result . line_max
938
945
else
939
946
results << result
940
947
end
941
948
end
942
949
end
950
+
951
+ results
943
952
end
944
953
945
954
# -> { it }
0 commit comments