Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/core/MonoDevelop.Core/MonoDevelop.Projects/HelpService.cs')
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/HelpService.cs169
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");
- }
- }
-
}
}