File: JsMemberFormatter.cs

package info (click to toggle)
mono 6.12.0.199%2Bds-4
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,273,192 kB
  • sloc: cs: 11,181,844; xml: 2,850,076; ansic: 689,413; cpp: 123,344; perl: 59,361; javascript: 30,841; asm: 21,845; makefile: 19,951; sh: 15,030; python: 4,771; pascal: 925; sql: 859; sed: 16; php: 1
file content (77 lines) | stat: -rw-r--r-- 2,585 bytes parent folder | download | duplicates (7)
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);
        }
    }
}