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()); }
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); }
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()); }
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()); }
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); }
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); }
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()); }
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()); }
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()); }
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()); }
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()); }