Microsoft.IronStudio.Core.DlrClassifierProvider.GetClassifier C# (CSharp) Method

GetClassifier() public method

public GetClassifier ( ITextBuffer buffer ) : IClassifier
buffer ITextBuffer
return IClassifier
        public IClassifier GetClassifier(ITextBuffer buffer) {
            IDlrClassifier existing;
            if (buffer.Properties.TryGetProperty<IDlrClassifier>(typeof(IDlrClassifier), out existing)) {
                return existing;
            }
            
            if (_categoryMap == null) {
                _categoryMap = FillCategoryMap(_classificationRegistry);
            }
            var specificContentType = ContentType;

            DlrClassifier res = null;
            if (specificContentType == null || buffer.ContentType == specificContentType) {
                res = new DlrClassifier(this, Engine, buffer);
            } else {

                foreach (var baseType in buffer.ContentType.BaseTypes) {
                    if (baseType == specificContentType) {
                        res = new DlrClassifier(this, Engine, buffer);
                        break;
                    }
                }
            }

            if (res != null) {
                buffer.Properties.AddProperty(typeof(IDlrClassifier), res);
            }

            return res;
        }