public bool?IsElementObsolete(IDeclaredElement element, out RichTextBlock obsoleteDescription,
                                      DeclaredElementDescriptionStyle style)
        {
            obsoleteDescription = null;
            var obsoletable = element as IObsoletable;

            if (obsoletable == null)
            {
                return(null);
            }

            if (!obsoletable.Obsolete && !obsoletable.NonStandard)
            {
                return(false);
            }

            obsoleteDescription = new RichTextBlock();
            var richText = new RichText();

            if (obsoletable.Obsolete)
            {
                richText.Append("Obsolete!", new TextStyle(FontStyle.Bold));
            }
            else if (obsoletable.NonStandard)
            {
                richText.Append("Non-standard!", new TextStyle(FontStyle.Bold));
            }

            obsoleteDescription.Add(richText);

            return(true);
        }
Exemplo n.º 2
0
        private RichTextBlock GetDescription(CSharpCodeCompletionContext context, IMethodDeclaration methodDeclaration)
        {
            if (methodDeclaration.DeclaredElement == null)
            {
                return(null);
            }

            var presenter               = context.BasicContext.Solution.GetComponent <IDeclaredElementDescriptionPresenter>();
            var richTextBlock           = new RichTextBlock(new RichTextBlockParameters(1));
            var psiLanguageType         = methodDeclaration.Language;
            var declaredElementInstance = new DeclaredElementInstance(methodDeclaration.DeclaredElement);

            richTextBlock.Add(DeclaredElementPresenter.Format(psiLanguageType, ourPresenter, declaredElementInstance)
                              .Capitalize());
            var description = presenter.GetDeclaredElementDescription(methodDeclaration.DeclaredElement,
                                                                      DeclaredElementDescriptionStyle.SUMMARY_STYLE, psiLanguageType);

            if (!RichTextBlock.IsNullOrEmpty(description))
            {
                richTextBlock.AddLines(description);
            }

            return(richTextBlock);
        }
        public bool? IsElementObsolete(IDeclaredElement element, out RichTextBlock obsoleteDescription,
                                       DeclaredElementDescriptionStyle style)
        {
            obsoleteDescription = null;
            var obsoletable = element as IObsoletable;
            if (obsoletable == null)
                return null;

            if (!obsoletable.Obsolete && !obsoletable.NonStandard)
                return false;

            obsoleteDescription = new RichTextBlock();
            var richText = new RichText();
            if (obsoletable.Obsolete)
                richText.Append("Obsolete!", new TextStyle(FontStyle.Bold));
            else if (obsoletable.NonStandard)
                richText.Append("Non-standard!", new TextStyle(FontStyle.Bold));

            obsoleteDescription.Add(richText);

            return true;
        }
Exemplo n.º 4
0
        public RichTextBlock GetElementDescription(IDeclaredElement element, DeclaredElementDescriptionStyle style,
                                                   PsiLanguageType language, IPsiModule module = null)
        {
            if (!element.IsFromUnityProject())
            {
                return(null);
            }

            var method = element as IMethod;

            if (method != null)
            {
                var eventFunction = myUnityApi.GetUnityEventFunction(method);
                if (eventFunction?.Description != null)
                {
                    var richTextBlock = new RichTextBlock(eventFunction.Description);
                    if (eventFunction.Coroutine)
                    {
                        richTextBlock.Add("This function can be a coroutine.");
                    }
                    if (eventFunction.Undocumented)
                    {
                        richTextBlock.Add("This function is undocumented.");
                    }
                    return(richTextBlock);
                }
            }

            var parameter = element as IParameter;
            var owner     = parameter?.ContainingParametersOwner as IMethod;

            if (owner != null)
            {
                EventFunctionMatch match;
                var eventFunction = myUnityApi.GetUnityEventFunction(owner, out match);
                if (eventFunction == null || (match & EventFunctionMatch.MatchingSignature) == 0)
                {
                    return(null);
                }

                var eventFunctionParameter = eventFunction.GetParameter(parameter.ShortName);
                if (eventFunctionParameter == null)
                {
                    var parameters = parameter.ContainingParametersOwner.Parameters;
                    for (var i = 0; i < parameters.Count; i++)
                    {
                        if (Equals(parameters[i], parameter))
                        {
                            eventFunctionParameter = eventFunction.Parameters[i];
                            break;
                        }
                    }
                }

                if (eventFunctionParameter?.Description != null)
                {
                    var richTextBlock = new RichTextBlock(eventFunctionParameter.Description);
                    if (eventFunctionParameter.IsOptional)
                    {
                        if (string.IsNullOrEmpty(eventFunctionParameter.Justification))
                        {
                            richTextBlock.Add("This parameter is optional and can be removed if not used.");
                        }
                        else
                        {
                            richTextBlock.Add($"This parameter is optional: {eventFunctionParameter.Justification}");
                        }
                    }
                    return(richTextBlock);
                }
            }

            return(null);
        }