public BraceCache(ITextSnapshot snapshot, ILanguage language) { this.Snapshot = snapshot; this.LastParsedPosition = -1; this.Language = language; if ( this.Language != null ) { this.braceExtractor = this.Language.NewBraceExtractor(); this.braceList.Clear(); String braceChars = Language.BraceList; for ( int i = 0; i < braceChars.Length; i += 2 ) { this.braceList.Add(braceChars[i], braceChars[i + 1]); } } }
private IList<CharPos> Extract(IBraceExtractor extractor, string input, int start, int state) { extractor.Reset(); ITextChars chars = new StringChars(input, start); return extractor.Extract(chars).ToList(); }
private IList<CharPos> Extract(IBraceExtractor extractor, string input, int start, int state) { extractor.Reset(); input = input.Substring(start); String[] lines = input.Split('\r', '\n'); List<CharPos> result = new List<CharPos>(); foreach ( String line in lines ) { ITextChars chars = new StringChars(line); while ( !chars.EndOfLine ) { result.AddRange(extractor.Extract(chars)); } } return result; }