internal static string Getkeyword(string moniker, out MonikerHelper.MonikerAttribute keyword)
        {
            moniker = moniker.TrimStart();
            int indexOfEqualSign = moniker.IndexOf("=", StringComparison.Ordinal);
            if (indexOfEqualSign == -1)
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MonikerSyntaxException(SR.GetString(SR.NoEqualSignFound, moniker)));

            int indexOfComma = moniker.IndexOf(",", StringComparison.Ordinal);

            if (indexOfComma != -1 && indexOfComma < indexOfEqualSign)
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MonikerSyntaxException(SR.GetString(SR.NoEqualSignFound, moniker)));

            string suspectedKeyword = moniker.Substring(0, indexOfEqualSign).Trim();
            suspectedKeyword = suspectedKeyword.ToLower(System.Globalization.CultureInfo.InvariantCulture);

            foreach (MonikerHelper.KeywordInfo keywordInfo in MonikerHelper.KeywordInfo.KeywordCollection)
            {
                if (suspectedKeyword == keywordInfo.Name)
                {
                    keyword = keywordInfo.Attrib;
                    moniker = moniker.Substring(indexOfEqualSign + 1).TrimStart();
                    return moniker;
                }
            }
            throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MonikerSyntaxException(SR.GetString(SR.UnknownMonikerKeyword, suspectedKeyword)));
        }
 internal static string Getkeyword(string moniker, out MonikerHelper.MonikerAttribute keyword)
 {
     moniker = moniker.TrimStart(new char[0]);
     int index = moniker.IndexOf("=", StringComparison.Ordinal);
     if (index == -1)
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MonikerSyntaxException(System.ServiceModel.SR.GetString("NoEqualSignFound", new object[] { moniker })));
     }
     int num2 = moniker.IndexOf(",", StringComparison.Ordinal);
     if ((num2 != -1) && (num2 < index))
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MonikerSyntaxException(System.ServiceModel.SR.GetString("NoEqualSignFound", new object[] { moniker })));
     }
     string str = moniker.Substring(0, index).Trim().ToLower(CultureInfo.InvariantCulture);
     foreach (MonikerHelper.KeywordInfo info in MonikerHelper.KeywordInfo.KeywordCollection)
     {
         if (str == info.Name)
         {
             keyword = info.Attrib;
             moniker = moniker.Substring(index + 1).TrimStart(new char[0]);
             return moniker;
         }
     }
     throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MonikerSyntaxException(System.ServiceModel.SR.GetString("UnknownMonikerKeyword", new object[] { str })));
 }
        void ICompletionSource.AugmentCompletionSession(ICompletionSession session, IList <CompletionSet> completionSets)
        {
            if (!PositionHelper.IsStringLiteral(session, _mTextBuffer))
            {
                return;
            }

            if (!(Microsoft.VisualStudio.Shell.ServiceProvider.GlobalProvider.GetService(typeof(DTE)) is DTE dte))
            {
                return;
            }

            var metadata = (List <Completion>)SharedGlobals.GetGlobal("CrmMetadata", dte);

            if (metadata == null)
            {
                if (CrmMetadata.Metadata == null)
                {
                    return;
                }

                var strList = CrmMetadata.Metadata;
                metadata = new List <Completion>();
                foreach (var completionValue in strList)
                {
                    metadata.Add(new Completion(completionValue.Name, completionValue.Replacement,
                                                completionValue.Description, MonikerHelper.GetImage(completionValue.MetadataType), null));
                }

                SharedGlobals.SetGlobal("CrmMetadata", metadata, dte);
            }

            completionSets.Add(new CompletionSet(
                                   "CRM",
                                   "CRM",
                                   FindTokenSpanAtPosition(session.GetTriggerPoint(_mTextBuffer), session),
                                   metadata,
                                   null)
                               );
        }
 internal KeywordInfo(string name, MonikerHelper.MonikerAttribute attrib)
 {
     this.Name = name;
     this.Attrib = attrib;
 }