@@ -10,24 +10,12 @@ namespace LogExpert.Classes
1010 /// <summary>
1111 /// Delivers the range (from..to) that matches the current range filter settings starting from a given line.
1212 /// </summary>
13- public class RangeFinder
13+ public class RangeFinder ( FilterParams filterParams , ColumnizerCallback callback )
1414 {
1515 #region Fields
1616
1717 private static readonly ILogger _logger = LogManager . GetCurrentClassLogger ( ) ;
18-
19- private readonly ColumnizerCallback _callback ;
20- private readonly FilterParams _filterParams ;
21-
22- #endregion
23-
24- #region cTor
25-
26- public RangeFinder ( FilterParams filterParams , ColumnizerCallback callback )
27- {
28- _filterParams = filterParams . Copy ( ) ;
29- _callback = callback ;
30- }
18+ private readonly FilterParams _filterParams = filterParams . CopyCurrentColumnizer ( ) ;
3119
3220 #endregion
3321
@@ -36,6 +24,7 @@ public RangeFinder(FilterParams filterParams, ColumnizerCallback callback)
3624 public Range FindRange ( int startLine )
3725 {
3826 _logger . Info ( $ "Starting range search for { _filterParams . SearchText } ... { _filterParams . RangeSearchText } ") ;
27+
3928 if ( _filterParams . RangeSearchText == null || _filterParams . RangeSearchText . Trim ( ) . Length == 0 )
4029 {
4130 _logger . Info ( "Range search text not set. Cancelling range search." ) ;
@@ -49,46 +38,54 @@ public Range FindRange(int startLine)
4938
5039 _filterParams . IsRangeSearch = false ;
5140 _filterParams . IsInRange = false ;
52- int lineCount = _callback . GetLineCount ( ) ;
41+
42+ int lineCount = callback . GetLineCount ( ) ;
5343 int lineNum = startLine ;
5444 bool foundStartLine = false ;
45+
5546 Range range = new ( ) ;
56- FilterParams tmpParam = _filterParams . Copy ( ) ;
47+ FilterParams tmpParam = _filterParams . CopyCurrentColumnizer ( ) ;
48+
5749 tmpParam . SearchText = _filterParams . RangeSearchText ;
5850
5951 // search backward for starting keyword
60- var line = _callback . GetLogLine ( lineNum ) ;
52+ var line = callback . GetLogLine ( lineNum ) ;
53+
6154 while ( lineNum >= 0 )
6255 {
63- _callback . LineNum = lineNum ;
64- if ( Util . TestFilterCondition ( _filterParams , line , _callback ) )
56+ callback . LineNum = lineNum ;
57+
58+ if ( Util . TestFilterCondition ( _filterParams , line , callback ) )
6559 {
6660 foundStartLine = true ;
6761 break ;
6862 }
6963 lineNum -- ;
70- line = _callback . GetLogLine ( lineNum ) ;
71- if ( lineNum < 0 || Util . TestFilterCondition ( tmpParam , line , _callback )
72- ) // do not crash on Ctrl+R when there is not start line found
64+ line = callback . GetLogLine ( lineNum ) ;
65+
66+ if ( lineNum < 0 || Util . TestFilterCondition ( tmpParam , line , callback ) ) // do not crash on Ctrl+R when there is not start line found
7367 {
7468 // lower range bound found --> we are not in between a valid range
7569 break ;
7670 }
7771 }
72+
7873 if ( ! foundStartLine )
7974 {
8075 _logger . Info ( "Range start not found" ) ;
8176 return null ;
8277 }
78+
8379 range . StartLine = lineNum ;
8480 _filterParams . IsRangeSearch = true ;
8581 _filterParams . IsInRange = true ;
8682 lineNum ++ ;
83+
8784 while ( lineNum < lineCount )
8885 {
89- line = _callback . GetLogLine ( lineNum ) ;
90- _callback . LineNum = lineNum ;
91- if ( ! Util . TestFilterCondition ( _filterParams , line , _callback ) )
86+ line = callback . GetLogLine ( lineNum ) ;
87+ callback . LineNum = lineNum ;
88+ if ( ! Util . TestFilterCondition ( _filterParams , line , callback ) )
9289 {
9390 break ;
9491 }
0 commit comments