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:
authorMike Krüger <mkrueger@xamarin.com>2015-02-04 18:28:05 +0300
committerMike Krüger <mkrueger@xamarin.com>2015-02-04 18:28:05 +0300
commit1117725a68ee1a3eebb0e61db2269cd713de120b (patch)
tree04f351fe9d12ef8e03b20b04a583df2aa0dcc06a /main/src/addins/MonoDevelop.AssemblyBrowser
parent43d13ccd83052aaeebd3b437575f068b4d5c1da8 (diff)
[Core] Removed NR5 reference.
NR5 got replaced with roslyn. There wasn't much left that referenced NR5 there anyways.
Diffstat (limited to 'main/src/addins/MonoDevelop.AssemblyBrowser')
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.csproj4
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/HelpExtensions.cs168
2 files changed, 171 insertions, 1 deletions
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.csproj b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.csproj
index 478441d413..8fb28860d5 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.csproj
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.csproj
@@ -46,7 +46,6 @@
<ItemGroup>
<Reference Include="Mono.Posix" />
<Reference Include="System" />
- <Reference Include="System.Xml" />
<Reference Include="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
<SpecificVersion>False</SpecificVersion>
</Reference>
@@ -76,6 +75,8 @@
<Reference Include="Microsoft.CodeAnalysis">
<HintPath>..\..\..\packages\Microsoft.CodeAnalysis.Common.1.0.0.0-beta2\lib\net45\Microsoft.CodeAnalysis.dll</HintPath>
</Reference>
+ <Reference Include="monodoc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
+ <Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\core\MonoDevelop.Core\MonoDevelop.Core.csproj">
@@ -177,6 +178,7 @@
<Compile Include="XmlDocIdLib\XmlDocIdGenerator.cs" />
<Compile Include="AddinInfo.cs" />
<Compile Include="MonoDevelop.AssemblyBrowser\NRefactoryStock.cs" />
+ <Compile Include="MonoDevelop.AssemblyBrowser\HelpExtensions.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="gtk-gui\gui.stetic">
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/HelpExtensions.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/HelpExtensions.cs
new file mode 100644
index 0000000000..ee67c390d8
--- /dev/null
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/HelpExtensions.cs
@@ -0,0 +1,168 @@
+//
+// HelpExtensions.cs
+//
+// Author:
+// Mike Krüger <mkrueger@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin Inc. (http://xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Linq;
+using Monodoc;
+using System.Threading;
+using MonoDevelop.Core;
+using Mono.Addins;
+using System.IO;
+using System.Collections.Generic;
+using MonoDevelop.Projects.Extensions;
+using System.Text;
+using System.Xml;
+using ICSharpCode.NRefactory.TypeSystem;
+using MonoDevelop.Projects;
+using ICSharpCode.NRefactory.Documentation;
+
+namespace MonoDevelop.AssemblyBrowser
+{
+ 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);
+ }
+
+
+ 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 (IdStringProvider.GetIdString (member)) : 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");
+ }
+ }
+
+ }
+}
+