コード例 #1
0
        public string GetDescription(int overload, int currentParameter)
        {
            StringBuilder result       = new StringBuilder();
            var           curParameter = currentParameter >= 0 && currentParameter < indexers [overload].Parameters.Count ? indexers [overload].Parameters [currentParameter] : null;

            if (curParameter != null)
            {
                string docText = AmbienceService.GetDocumentation(indexers [overload]);
                if (!string.IsNullOrEmpty(docText))
                {
                    var paramRegex = new Regex("(\\<param\\s+name\\s*=\\s*\"" + curParameter.Name + "\"\\s*\\>.*?\\</param\\>)", RegexOptions.Compiled);
                    var match      = paramRegex.Match(docText);
                    if (match.Success)
                    {
                        result.AppendLine();
                        string text = match.Groups [1].Value;
                        text = "<summary>" + AmbienceService.GetDocumentationSummary(indexers [overload]) + "</summary>" + text;
                        result.Append(AmbienceService.GetDocumentationMarkup(text, new AmbienceService.DocumentationFormatOptions {
                            HighlightParameter = curParameter.Name,
                            MaxLineLength      = 60
                        }));
                    }
                }
            }

            return(result.ToString());
        }
コード例 #2
0
        public static TooltipInformation CreateTooltipInformation(ICompilation compilation, CSharpUnresolvedFile file, TextEditorData textEditorData, MonoDevelop.PlayScript.Formatting.PlayScriptFormattingPolicy formattingPolicy, IParameterizedMember entity, int currentParameter, bool smartWrap)
        {
            var tooltipInfo = new TooltipInformation();
            var resolver    = file.GetResolver(compilation, textEditorData.Caret.Location);
            var sig         = new SignatureMarkupCreator(resolver, formattingPolicy.CreateOptions());

            sig.HighlightParameter       = currentParameter;
            sig.BreakLineAfterReturnType = smartWrap;
            try {
                tooltipInfo.SignatureMarkup = sig.GetMarkup(entity);
            } catch (Exception e) {
                LoggingService.LogError("Got exception while creating markup for :" + entity, e);
                return(new TooltipInformation());
            }
            tooltipInfo.SummaryMarkup = AmbienceService.GetSummaryMarkup(entity) ?? "";

            if (entity is IMethod)
            {
                var method = (IMethod)entity;
                if (method.IsExtensionMethod)
                {
                    tooltipInfo.AddCategory(GettextCatalog.GetString("Extension Method from"), method.DeclaringTypeDefinition.FullName);
                }
            }
            int paramIndex = currentParameter;

            if (entity is IMethod && ((IMethod)entity).IsExtensionMethod)
            {
                paramIndex++;
            }
            paramIndex = Math.Min(entity.Parameters.Count - 1, paramIndex);

            var curParameter = paramIndex >= 0 && paramIndex < entity.Parameters.Count ? entity.Parameters [paramIndex] : null;

            if (curParameter != null)
            {
                string docText = AmbienceService.GetDocumentation(entity);
                if (!string.IsNullOrEmpty(docText))
                {
                    string text       = docText;
                    Regex  paramRegex = new Regex("(\\<param\\s+name\\s*=\\s*\"" + curParameter.Name + "\"\\s*\\>.*?\\</param\\>)", RegexOptions.Compiled);
                    Match  match      = paramRegex.Match(docText);

                    if (match.Success)
                    {
                        text = AmbienceService.GetDocumentationMarkup(entity, match.Groups [1].Value);
                        if (!string.IsNullOrWhiteSpace(text))
                        {
                            tooltipInfo.AddCategory(GettextCatalog.GetString("Parameter"), text);
                        }
                    }
                }

                if (curParameter.Type.Kind == TypeKind.Delegate)
                {
                    tooltipInfo.AddCategory(GettextCatalog.GetString("Delegate Info"), sig.GetDelegateInfo(curParameter.Type));
                }
            }
            return(tooltipInfo);
        }
コード例 #3
0
        string IAssemblyBrowserNodeBuilder.GetDocumentationMarkup(ITreeNavigator navigator)
        {
            var method   = (IUnresolvedMethod)navigator.DataItem;
            var resolved = Resolve(navigator, method);

            if (GetMainAssembly(navigator) == null)
            {
                return(Mono.TextEditor.Utils.TextFileUtility.ReadAllText(method.Region.FileName));
            }
            StringBuilder result = new StringBuilder();

            result.Append("<big>");
            result.Append(Ambience.GetString(resolved, OutputFlags.AssemblyBrowserDescription | OutputFlags.IncludeConstraints));
            result.Append("</big>");
            result.AppendLine();

            AmbienceService.DocumentationFormatOptions options = new AmbienceService.DocumentationFormatOptions();
            options.MaxLineLength = -1;
            options.BigHeadings   = true;
            options.Ambience      = Ambience;
            result.AppendLine();

            result.Append(AmbienceService.GetDocumentationMarkup(resolved, AmbienceService.GetDocumentation(resolved), options));

            return(result.ToString());
        }
コード例 #4
0
        public string GetMethodMarkup(int overload, string[] parameterMarkup, int currentParameter)
        {
            StringBuilder result = new StringBuilder();

//			int curLen = 0;
            result.Append(ambience.GetString(indexers[overload].ReturnType, OutputFlags.ClassBrowserEntries));
            result.Append(' ');
            result.Append("<b>");
            result.Append(resolvedExpression);
            result.Append("</b>");
            result.Append('[');
            int parameterCount = 0;

            foreach (string parameter in parameterMarkup)
            {
                if (parameterCount > 0)
                {
                    result.Append(", ");
                }
                result.Append(parameter);
                parameterCount++;
            }
            result.Append(']');
            IParameter curParameter = currentParameter >= 0 && currentParameter < indexers[overload].Parameters.Count ? indexers[overload].Parameters[currentParameter] : null;

            if (curParameter != null)
            {
                string docText = AmbienceService.GetDocumentation(indexers[overload]);
                if (!string.IsNullOrEmpty(docText))
                {
                    Regex paramRegex = new Regex("(\\<param\\s+name\\s*=\\s*\"" + curParameter.Name + "\"\\s*\\>.*?\\</param\\>)", RegexOptions.Compiled);
                    Match match      = paramRegex.Match(docText);
                    if (match.Success)
                    {
                        result.AppendLine();
                        string text = match.Groups[1].Value;
                        text = "<summary>" + AmbienceService.GetDocumentationSummary(indexers[overload]) + "</summary>" + text;
                        result.Append(AmbienceService.GetDocumentationMarkup(text, new AmbienceService.DocumentationFormatOptions {
                            HighlightParameter = curParameter.Name,
                            MaxLineLength      = 60
                        }));
                    }
                }
            }

            return(result.ToString());
        }
コード例 #5
0
 public static string GetBaseDocumentation(IMember member)
 {
     if (member.DeclaringType == null || member.DeclaringType.SourceProjectDom == null)
     {
         return(null);
     }
     if (member is IMethod && (((IMethod)member).IsConstructor || ((IMethod)member).IsFinalizer))
     {
         return(null);
     }
     foreach (IType type in member.DeclaringType.SourceProjectDom.GetInheritanceTree(member.DeclaringType))
     {
         if (type.DecoratedFullName == member.DeclaringType.DecoratedFullName)
         {
             continue;
         }
         IMember documentMember = null;
         foreach (IMember searchedMember in type.SearchMember(member.Name, true))
         {
             if (searchedMember.MemberType == member.MemberType && searchedMember.Name == member.Name && searchedMember.CanHaveParameters == member.CanHaveParameters)
             {
                 if (searchedMember.CanHaveParameters && searchedMember.Parameters.Count != member.Parameters.Count)
                 {
                     continue;
                 }
                 if (searchedMember.Modifiers != member.Modifiers)
                 {
                     continue;
                 }
                 documentMember = searchedMember;
                 break;
             }
         }
         if (documentMember != null)
         {
             string documentation = AmbienceService.GetDocumentation(documentMember);
             if (documentation != null)
             {
                 return(documentation);
             }
         }
     }
     return(null);
 }
コード例 #6
0
 public static string GetBaseDocumentation(IEntity member)
 {
     if (member.DeclaringTypeDefinition == null)
     {
         return(null);
     }
     if (member is IMethod && (((IMethod)member).IsConstructor || ((IMethod)member).IsDestructor))
     {
         return(null);
     }
     foreach (var type in member.DeclaringTypeDefinition.GetAllBaseTypeDefinitions())
     {
         if (type.Equals(member.DeclaringTypeDefinition))
         {
             continue;
         }
         IMember documentMember = null;
         foreach (var searchedMember in type.Members.Where(m => m.Name == member.Name))
         {
             if (searchedMember.SymbolKind == member.SymbolKind && searchedMember.Name == member.Name)
             {
                 if ((searchedMember is IParameterizedMember) && ((IParameterizedMember)searchedMember).Parameters.Count != ((IParameterizedMember)member).Parameters.Count)
                 {
                     continue;
                 }
                 if (searchedMember.Accessibility != member.Accessibility)
                 {
                     continue;
                 }
                 documentMember = searchedMember;
                 break;
             }
         }
         if (documentMember != null)
         {
             string documentation = AmbienceService.GetDocumentation(documentMember);
             if (documentation != null)
             {
                 return(documentation);
             }
         }
     }
     return(null);
 }
コード例 #7
0
        string IAssemblyBrowserNodeBuilder.GetDocumentationMarkup(ITreeNavigator navigator)
        {
            IProperty     property = (IProperty)navigator.DataItem;
            StringBuilder result   = new StringBuilder();

            result.Append("<big>");
            result.Append(Ambience.GetString(property, OutputFlags.AssemblyBrowserDescription));
            result.Append("</big>");
            result.AppendLine();

            AmbienceService.DocumentationFormatOptions options = new AmbienceService.DocumentationFormatOptions();
            options.MaxLineLength = -1;
            options.BigHeadings   = true;
            options.Ambience      = Ambience;
            result.AppendLine();

            result.Append(AmbienceService.GetDocumentationMarkup(AmbienceService.GetDocumentation(property), options));

            return(result.ToString());
        }
コード例 #8
0
        string IAssemblyBrowserNodeBuilder.GetDocumentationMarkup(ITreeNavigator navigator)
        {
            DomCecilMethod method = navigator.DataItem as DomCecilMethod;
            StringBuilder  result = new StringBuilder();

            result.Append("<big>");
            result.Append(Ambience.GetString(method, OutputFlags.AssemblyBrowserDescription | OutputFlags.IncludeConstraints));
            result.Append("</big>");
            result.AppendLine();

            AmbienceService.DocumentationFormatOptions options = new AmbienceService.DocumentationFormatOptions();
            options.MaxLineLength = -1;
            options.BigHeadings   = true;
            options.Ambience      = Ambience;
            result.AppendLine();

            result.Append(AmbienceService.GetDocumentationMarkup(AmbienceService.GetDocumentation(method), options));

            return(result.ToString());
        }
コード例 #9
0
        string IAssemblyBrowserNodeBuilder.GetDocumentationMarkup(ITreeNavigator navigator)
        {
            var type     = (IUnresolvedTypeDefinition)navigator.DataItem;
            var resolved = Resolve(navigator, type);
            var result   = new StringBuilder();

            result.Append("<big>");
            result.Append(Ambience.GetString(resolved, OutputFlags.AssemblyBrowserDescription));
            result.Append("</big>");
            result.AppendLine();

            AmbienceService.DocumentationFormatOptions options = new AmbienceService.DocumentationFormatOptions();
            options.MaxLineLength = -1;
            options.BigHeadings   = true;
            options.Ambience      = Ambience;
            result.AppendLine();

            result.Append(AmbienceService.GetDocumentationMarkup(AmbienceService.GetDocumentation(resolved.GetDefinition()), options));

            return(result.ToString());
        }
コード例 #10
0
        public override string GetDescription(int overload, int currentParameter)
        {
//			var flags = OutputFlags.ClassBrowserEntries | OutputFlags.IncludeMarkup | OutputFlags.IncludeGenerics;
//
//			string name = delegateType.Name;
//			var parameters = new StringBuilder ();
//			int curLen = 0;

            var sb = new StringBuilder();

            if (delegateType.GetDefinition().IsObsolete())
            {
                sb.AppendLine();
                sb.Append(GettextCatalog.GetString("[Obsolete]"));
            }
            var curParameter = currentParameter >= 0 && currentParameter < delegateMethod.Parameters.Count ? delegateMethod.Parameters [currentParameter] : null;

            string docText = AmbienceService.GetDocumentation(delegateType.GetDefinition());

            if (!string.IsNullOrEmpty(docText))
            {
                string text = docText;
                if (curParameter != null)
                {
                    Regex paramRegex = new Regex("(\\<param\\s+name\\s*=\\s*\"" + curParameter.Name + "\"\\s*\\>.*?\\</param\\>)", RegexOptions.Compiled);
                    Match match      = paramRegex.Match(docText);
                    if (match.Success)
                    {
                        text = match.Groups [1].Value;
                        text = "<summary>" + AmbienceService.GetDocumentationSummary(delegateMethod) + "</summary>" + text;
                    }
                }
                else
                {
                    text = "<summary>" + AmbienceService.GetDocumentationSummary(delegateMethod) + "</summary>";
                }
                sb.Append(AmbienceService.GetDocumentationMarkup(text, new AmbienceService.DocumentationFormatOptions
                {
                    HighlightParameter = curParameter != null ? curParameter.Name : null,
                    Ambience           = ambience,
                    SmallText          = true,
                    BoldHeadings       = false
                }));
            }

            if (curParameter != null)
            {
                var returnType = curParameter.Type;
                if (returnType.Kind == TypeKind.Delegate)
                {
                    if (sb.Length > 0)
                    {
                        sb.AppendLine();
                        sb.AppendLine();
                    }
                    sb.Append("<small>");
                    sb.AppendLine(GettextCatalog.GetString("Delegate information"));
                    sb.Append(ambience.GetString(returnType, OutputFlags.ReformatDelegates | OutputFlags.IncludeReturnType | OutputFlags.IncludeParameters | OutputFlags.IncludeParameterName));
                    sb.Append("</small>");
                }
            }
            return(sb.ToString());
        }
コード例 #11
0
        public string GetMethodMarkup(int overload, string[] parameterMarkup, int currentParameter)
        {
            string        name       = (this.delegateName ?? (methods[overload].IsConstructor ? ambience.GetString(methods[overload].DeclaringType, OutputFlags.ClassBrowserEntries | OutputFlags.IncludeMarkup | OutputFlags.IncludeGenerics) : methods[overload].Name));
            StringBuilder parameters = new StringBuilder();
            int           curLen     = 0;
            string        prefix     = !methods[overload].IsConstructor ? ambience.GetString(methods[overload].ReturnType, OutputFlags.ClassBrowserEntries | OutputFlags.IncludeMarkup | OutputFlags.IncludeGenerics) + " " : "";

            foreach (string parameter in parameterMarkup)
            {
                if (parameters.Length > 0)
                {
                    parameters.Append(", ");
                }
                string         text;
                Pango.AttrList attrs;
                char           ch;
                Pango.Global.ParseMarkup(parameter, '_', out attrs, out text, out ch);
                if (curLen > 80)
                {
                    parameters.AppendLine();
                    parameters.Append(new string (' ', (prefix != null ? prefix.Length : 0) + name.Length + 4));
                    curLen = 0;
                }
                curLen += text.Length + 2;
                parameters.Append(parameter);
            }
            StringBuilder sb = new StringBuilder();

            if (methods[overload].WasExtended)
            {
                sb.Append(GettextCatalog.GetString("(Extension) "));
            }
            sb.Append(prefix);
            sb.Append("<b>");
            sb.Append(name);
            sb.Append("</b> (");
            sb.Append(parameters.ToString());
            sb.Append(")");

            if (methods[overload].IsObsolete)
            {
                sb.AppendLine();
                sb.Append(GettextCatalog.GetString("[Obsolete]"));
            }
            IParameter curParameter = currentParameter >= 0 && currentParameter < methods[overload].Parameters.Count ? methods[overload].Parameters[currentParameter] : null;

            string docText = AmbienceService.GetDocumentation(methods[overload]);

            if (!string.IsNullOrEmpty(docText))
            {
                string text = docText;
                if (curParameter != null)
                {
                    Regex paramRegex = new Regex("(\\<param\\s+name\\s*=\\s*\"" + curParameter.Name + "\"\\s*\\>.*?\\</param\\>)", RegexOptions.Compiled);
                    Match match      = paramRegex.Match(docText);
                    if (match.Success)
                    {
                        text = match.Groups[1].Value;
                        text = "<summary>" + AmbienceService.GetDocumentationSummary(methods[overload]) + "</summary>" + text;
                    }
                }
                else
                {
                    text = "<summary>" + AmbienceService.GetDocumentationSummary(methods[overload]) + "</summary>";
                }
                sb.AppendLine();
                sb.Append(AmbienceService.GetDocumentationMarkup(text, new AmbienceService.DocumentationFormatOptions {
                    HighlightParameter = curParameter != null ? curParameter.Name : null,
                    Ambience           = ambience,
                    SmallText          = true
                }));
            }
            return(sb.ToString());
        }