@@ -663,10 +663,14 @@ impl<T: Source> StreamChunks for ReplaceSource<T> {
663
663
664
664
// Insert remaining replacements content split into chunks by lines
665
665
let mut line = result. generated_line as i64 + generated_line_offset;
666
- let matches: Vec < Rope > = split_into_lines ( & remainder) . collect ( ) ;
667
- for ( m, content_line) in matches. iter ( ) . enumerate ( ) {
666
+ let lines: Vec < Rope > = split_into_lines ( & remainder) . collect ( ) ;
667
+ let lines_len = lines. len ( ) ;
668
+ for ( m, content_line) in lines. into_iter ( ) . enumerate ( ) {
669
+ let newline = content_line. ends_with ( "\n " ) ;
670
+ let content_line_len = content_line. len ( ) ;
671
+
668
672
on_chunk (
669
- Some ( content_line. clone ( ) ) ,
673
+ Some ( content_line) ,
670
674
Mapping {
671
675
generated_line : line as u32 ,
672
676
generated_column : ( ( result. generated_column as i64 )
@@ -679,11 +683,11 @@ impl<T: Source> StreamChunks for ReplaceSource<T> {
679
683
} ,
680
684
) ;
681
685
682
- if m == matches . len ( ) - 1 && !content_line . ends_with ( " \n " ) {
686
+ if m == lines_len - 1 && !newline {
683
687
if generated_column_offset_line == line {
684
- generated_column_offset += content_line . len ( ) as i64 ;
688
+ generated_column_offset += content_line_len as i64 ;
685
689
} else {
686
- generated_column_offset = content_line . len ( ) as i64 ;
690
+ generated_column_offset = content_line_len as i64 ;
687
691
generated_column_offset_line = line;
688
692
}
689
693
} else {
0 commit comments