Xamarin Public Jenkins (auto-signing) 95fdb59ea6 Imported Upstream version 6.6.0.89
Former-commit-id: b39a328747c2f3414dc52e009fb6f0aa80ca2492
2019-09-24 08:53:40 +00:00

80 lines
2.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Text;
using Mono.Cecil;
using Mono.Documentation;
using Mono.Documentation.Updater;
namespace mdoc.Mono.Documentation.Updater.Formatters
{
public class JsMemberFormatter : JsFormatter
{
public override string Language => Consts.Javascript;
private readonly MemberFormatter usageFormatter = new JsUsageFormatter();
public override MemberFormatter UsageFormatter => usageFormatter;
protected override string GetMethodDeclaration(MethodDefinition method)
{
var buf = new StringBuilder();
buf.Append("function ");
buf.Append(GetMethodName(method));
buf.Append("(");
AppendParameters(buf, method, method.Parameters);
buf.Append(")");
return buf.ToString();
}
protected override string GetTypeDeclaration(TypeDefinition type)
{
// What version of ES/JS is supported? For example, we need to know what kind of syntax to use to declare a type
// [RP] This depends on your target platform.
// In UWP, its the same “version” of ES that is currently supported by the Edge browser.
// For Windows 8.0, this was IE10, and for Windows 8.1, this was IE11.
// Since Windows 10 and Edge, the browser has been evergreen, and is well into the ES2015+ versions.
var publicConstructor = GetConstructor(type);
return GetDeclaration(publicConstructor);
}
protected override string GetConstructorDeclaration(MethodDefinition constructor)
{
var buf = new StringBuilder();
buf.Append("function ");
AppendTypeName(buf, constructor.DeclaringType.Name);
buf.Append("(");
AppendParameters(buf, constructor, constructor.Parameters);
buf.Append(")");
return buf.ToString();
}
public override bool IsSupported(MemberReference mref)
{
switch (mref)
{
case PropertyDefinition _:
return false;
case EventDefinition _:
return false;
}
return base.IsSupported(mref);
}
public override bool IsSupported(TypeReference tref)
{
var type = tref.Resolve();
if (type == null)
return false;
if (type.IsEnum ||
type.IsValueType ||
DocUtils.IsDelegate(type))
return false;
return base.IsSupported(tref);
}
}
}