diff options
Diffstat (limited to 'main/src/core/MonoDevelop.Core/MonoDevelop.Projects/HelpService.cs')
-rw-r--r-- | main/src/core/MonoDevelop.Core/MonoDevelop.Projects/HelpService.cs | 169 |
1 files changed, 2 insertions, 167 deletions
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/HelpService.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/HelpService.cs index 55148f5392..c5bf38ffcb 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/HelpService.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/HelpService.cs @@ -33,11 +33,6 @@ using Mono.Addins; using System.IO; using System.Collections.Generic; using MonoDevelop.Projects.Extensions; -using ICSharpCode.NRefactory.TypeSystem; -using System.Text; -using System.Xml; -using ICSharpCode.NRefactory.Semantics; -using ICSharpCode.NRefactory.Documentation; namespace MonoDevelop.Projects { @@ -135,172 +130,12 @@ namespace MonoDevelop.Projects //note: this method is very careful to check that the generated URLs exist in MonoDoc //because if we send nonexistent URLS to MonoDoc, it shows empty pages - public static string GetMonoDocHelpUrl (ResolveResult result) + public static string GetMonoDocHelpUrl (Microsoft.CodeAnalysis.ISymbol result) { if (result == null) return null; - -// if (result is AggregatedResolveResult) -// result = ((AggregatedResolveResult)result).PrimaryResult; - - - if (result is NamespaceResolveResult) { - string namespc = ((NamespaceResolveResult)result).NamespaceName; - //verify that the namespace exists in the help tree - //FIXME: GetHelpXml doesn't seem to work for namespaces, so forced to do full render - Monodoc.Node dummy; - if (!String.IsNullOrEmpty (namespc) && HelpTree != null && HelpTree.RenderUrl ("N:" + namespc, out dummy) != null) - return "N:" + namespc; - else - return null; - } - - IMember member = null; -// if (result is MethodGroupResolveResult) -// member = ((MethodGroupResolveResult)result).Methods.FirstOrDefault (); -// else - if (result is MemberResolveResult) - member = ((MemberResolveResult)result).Member; - - if (member != null && member.GetMonodocDocumentation () != null) - return member.GetIdString (); - - var type = result.Type; - if (type != null && !String.IsNullOrEmpty (type.FullName)) { - string t = "T:" + type.FullName; - try { - var tree = HelpTree; - if (tree != null && tree.GetHelpXml (t) != null) - return t; - } catch (Exception) { - return null; - } - } - - return null; - } - } - - public static class HelpExtension - { - static void AppendTypeReference (StringBuilder result, ITypeReference type) - { - if (type is ArrayTypeReference) { - var array = (ArrayTypeReference)type; - AppendTypeReference (result, array.ElementType); - result.Append ("["); - result.Append (new string (',', array.Dimensions)); - result.Append ("]"); - return; - } - - if (type is PointerTypeReference) { - var ptr = (PointerTypeReference)type; - AppendTypeReference (result, ptr.ElementType); - result.Append ("*"); - return; - } - - if (type is IType) - result.Append (((IType)type).FullName); + return result.GetDocumentationCommentId (); } - - - static void AppendHelpParameterList (StringBuilder result, IList<IParameter> parameters) - { - result.Append ('('); - if (parameters != null) { - for (int i = 0; i < parameters.Count; i++) { - if (i > 0) - result.Append (','); - var p = parameters [i]; - if (p == null) - continue; - if (p.IsRef || p.IsOut) - result.Append ("&"); - AppendTypeReference (result, p.Type.ToTypeReference ()); - } - } - result.Append (')'); - } - - static void AppendHelpParameterList (StringBuilder result, IList<IUnresolvedParameter> parameters) - { - result.Append ('('); - if (parameters != null) { - for (int i = 0; i < parameters.Count; i++) { - if (i > 0) - result.Append (','); - var p = parameters [i]; - if (p == null) - continue; - if (p.IsRef || p.IsOut) - result.Append ("&"); - AppendTypeReference (result, p.Type); - } - } - result.Append (')'); - } - - static XmlNode FindMatch (IMethod method, XmlNodeList nodes) - { - foreach (XmlNode node in nodes) { - XmlNodeList paramList = node.SelectNodes ("Parameters/*"); - if (method.Parameters.Count == 0 && paramList.Count == 0) - return node; - if (method.Parameters.Count != paramList.Count) - continue; - -/* bool matched = true; - for (int i = 0; i < p.Count; i++) { - if (p [i].ReturnType.FullName != paramList [i].Attributes ["Type"].Value) { - matched = false; - break; - } - } - if (matched)*/ - return node; - } - return null; - } - - public static XmlNode GetMonodocDocumentation (this IEntity member) - { - if (member.SymbolKind == SymbolKind.TypeDefinition) { - var helpXml = HelpService.HelpTree != null ? HelpService.HelpTree.GetHelpXml (member.GetIdString ()) : null; - if (helpXml == null) - return null; - return helpXml.SelectSingleNode ("/Type/Docs"); - } - - var declaringXml = HelpService.HelpTree != null && member.DeclaringTypeDefinition != null ? HelpService.HelpTree.GetHelpXml (member.DeclaringTypeDefinition.GetIdString ()) : null; - if (declaringXml == null) - return null; - - switch (member.SymbolKind) { - case SymbolKind.Method: { - var nodes = declaringXml.SelectNodes ("/Type/Members/Member[@MemberName='" + member.Name + "']"); - XmlNode node = nodes.Count == 1 ? nodes [0] : FindMatch ((IMethod)member, nodes); - if (node != null) { - System.Xml.XmlNode result = node.SelectSingleNode ("Docs"); - return result; - } - return null; - } - case SymbolKind.Constructor: { - var nodes = declaringXml.SelectNodes ("/Type/Members/Member[@MemberName='.ctor']"); - XmlNode node = nodes.Count == 1 ? nodes [0] : FindMatch ((IMethod)member, nodes); - if (node != null) { - System.Xml.XmlNode result = node.SelectSingleNode ("Docs"); - return result; - } - return null; - } - default: - return declaringXml.SelectSingleNode ("/Type/Members/Member[@MemberName='" + member.Name + "']/Docs"); - } - } - } } |