public SpanDefinition() { KeywordsList = new PatternListList(this); OperatorsList = new PatternListList(this); Style = new TextStyle.TextStyle(); KeywordsList.Parent = this; KeywordsList.IsKeyword = true; OperatorsList.Parent = this; OperatorsList.IsOperator = true; ScopePatterns = new ScopeList(this); }
private ScanResult_Word GetNextComplexWord(String Text, Segment CurrentSegment, int StartPositon) { if (StartPositon >= Text.Length) { return(new ScanResult_Word()); } ScanResult_Word Result = new ScanResult_Word(); int CurrentPosition = 0; //look for keywords PatternListList keywordsList = CurrentSegment.BlockType.KeywordsList; PatternList List = null; for (int i = 0; i < keywordsList.Count; i++) { List = keywordsList[i]; PatternCollection complexPatterns = List.ComplexPatterns; Pattern Word = null; for (int j = 0; j < complexPatterns.Count; j++) { Word = complexPatterns[j]; PatternScanResult psr = Word.IndexIn(Text, StartPositon, false, Separators); CurrentPosition = psr.Index; if ((CurrentPosition < Result.Position || Result.HasContent == false) && psr.Token != "") { Result.HasContent = true; Result.Position = CurrentPosition; Result.Token = psr.Token; Result.Pattern = Word; Result.ParentList = List; if (List.NormalizeCase) { if (!Word.IsComplex) { Result.Token = Word.StringPattern; } } } } } //look for operators PatternListList pattList = CurrentSegment.BlockType.OperatorsList; PatternList patternList = null; for (int i = 0; i < pattList.Count; i++) { patternList = pattList[i]; PatternCollection complexPatterns = patternList.ComplexPatterns; for (int j = 0; j < complexPatterns.Count; j++) { Pattern Word = complexPatterns[j]; PatternScanResult psr = Word.IndexIn(Text, StartPositon, false, Separators); CurrentPosition = psr.Index; if ((CurrentPosition < Result.Position || Result.HasContent == false) && psr.Token != "") { Result.HasContent = true; Result.Position = CurrentPosition; Result.Token = psr.Token; Result.Pattern = Word; Result.ParentList = patternList; if (patternList.NormalizeCase) { if (!Word.IsComplex) { Result.Token = Word.StringPattern; } } } } } if (Result.HasContent) { return(Result); } else { return(new ScanResult_Word()); } }