80 lines
2.6 KiB
C#
80 lines
2.6 KiB
C#
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, it’s 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);
|
||
}
|
||
}
|
||
} |