private ScanResultSegment GetNextChildSegment(Row Row, Span
currentSpan, int StartPos)
{
//this row has no text , just bail out...
if (StartPos >= Row.Text.Length)
return new ScanResultSegment();
var Result = new ScanResultSegment {HasContent = false, IsEndSegment = false};
foreach (SpanDefinition ChildBlock in currentSpan.spanDefinition.childSpanDefinitions)
{
//scan each scope in each childblock
foreach (Scope Scope in ChildBlock.ScopePatterns)
{
PatternScanResult psr = Scope.Start.IndexIn(Row.Text, StartPos,
Scope.CaseSensitive, Separators);
int CurrentPosition = psr.Index;
if ((!Result.HasContent || CurrentPosition < Result.Position) &&
psr.Token != "")
{
//we found a better match
//store this new match
Result.Pattern = Scope.Start;
Result.Position = CurrentPosition;
Result.Token = psr.Token;
Result.HasContent = true;
Result.spanDefinition = ChildBlock;
Result.Scope = Scope;
if (Scope.NormalizeCase)
if (!Scope.Start.IsComplex)
Result.Token = Scope.Start.StringPattern;
}
}
}
//no result , new ScanResultSegment();
if (!Result.HasContent)
return new ScanResultSegment();
return Result;
}
}