1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
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)
{
if (mref is PropertyDefinition || mref is 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);
}
}
}
|