@@ -112,6 +112,7 @@ impl<T: Source> ReplaceSource<T> {
112
112
}
113
113
114
114
/// Create a replacement with content at `[start, end)`.
115
+ #[ inline]
115
116
pub fn replace (
116
117
& mut self ,
117
118
start : u32 ,
@@ -663,10 +664,14 @@ impl<T: Source> StreamChunks for ReplaceSource<T> {
663
664
664
665
// Insert remaining replacements content split into chunks by lines
665
666
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 ( ) {
667
+ let lines: Vec < Rope > = split_into_lines ( & remainder) . collect ( ) ;
668
+ let lines_len = lines. len ( ) ;
669
+ for ( m, content_line) in lines. into_iter ( ) . enumerate ( ) {
670
+ let newline = content_line. ends_with ( "\n " ) ;
671
+ let content_line_len = content_line. len ( ) ;
672
+
668
673
on_chunk (
669
- Some ( content_line. clone ( ) ) ,
674
+ Some ( content_line) ,
670
675
Mapping {
671
676
generated_line : line as u32 ,
672
677
generated_column : ( ( result. generated_column as i64 )
@@ -679,11 +684,11 @@ impl<T: Source> StreamChunks for ReplaceSource<T> {
679
684
} ,
680
685
) ;
681
686
682
- if m == matches . len ( ) - 1 && !content_line . ends_with ( " \n " ) {
687
+ if m == lines_len - 1 && !newline {
683
688
if generated_column_offset_line == line {
684
- generated_column_offset += content_line . len ( ) as i64 ;
689
+ generated_column_offset += content_line_len as i64 ;
685
690
} else {
686
- generated_column_offset = content_line . len ( ) as i64 ;
691
+ generated_column_offset = content_line_len as i64 ;
687
692
generated_column_offset_line = line;
688
693
}
689
694
} else {
0 commit comments