1 | (function () {
|
2 | var dfm = require('./dfm');
|
3 | var builtInTypes = ['array','arraybuffer','asyncfunction','atomics','boolean','dataview','date','error','evalerror','float32array','float64array','function','generator','generatorfunction','infinity','int16array','int32array','int8array','internalerror','intl','intl.collator','intl.datetimeformat','intl.numberformat','iterator','json','map','math','nan','number','object','parallelarray','promise','proxy','rangeerror','referenceerror','reflect','regexp','simd','simd.bool16x8','simd.bool32x4','simd.bool64x2','simd.bool8x16','simd.float32x4','simd.float64x2','simd.int16x8','simd.int32x4','simd.int8x16','simd.uint16x8','simd.uint32x4','simd.uint8x16','set','sharedarraybuffer','stopiteration','string','symbol','syntaxerror','typeerror','typedarray','urierror','uint16array','uint32array','uint8array','uint8clampedarray','weakmap','weakset', 'undefined'];
|
4 |
|
5 | function handleClass(item, doclet, uidPrefix, manager) {
|
6 | item.type = 'Class';
|
7 | if (doclet.classdesc) {
|
8 | item.summary = dfm.convertLinkToGfm(doclet.classdesc, uidPrefix);
|
9 | }
|
10 |
|
11 | var ctor = {
|
12 | id: item.id + '.#ctor',
|
13 | uid: item.uid + '.#ctor',
|
14 | parent: item.uid,
|
15 | name: item.name,
|
16 | fullName: item.fullName + '.' + item.name,
|
17 | summary: dfm.convertLinkToGfm(doclet.description, uidPrefix)
|
18 | };
|
19 | handleFunction(ctor, doclet);
|
20 | item.children = [ctor.uid];
|
21 | manager.addItem(ctor);
|
22 | }
|
23 |
|
24 | function handleFunction(item, doclet, uidPrefix) {
|
25 | item.type = doclet.kind === 'function' ? 'Function' : 'Constructor';
|
26 | item.syntax = {};
|
27 |
|
28 | if (doclet.params !== undefined) {
|
29 | item.syntax.parameters = doclet.params.map(function (p) {
|
30 | return {
|
31 | id: p.name,
|
32 | type: handleParameterType(p.type),
|
33 | description: dfm.convertLinkToGfm(p.description, uidPrefix),
|
34 | optional: p.optional
|
35 | };
|
36 | });
|
37 | }
|
38 |
|
39 | var params = [];
|
40 | (item.syntax.parameters || []).forEach(function (p) {
|
41 | if (p.id.indexOf('.') < 0) params.push(p.id);
|
42 | });
|
43 | item.name += '(' + params.join(', ') + ')';
|
44 | item.fullName += '(' + params.join(', ') + ')';
|
45 |
|
46 | if (doclet.returns != undefined) {
|
47 | item.syntax.return = {
|
48 | type: handleParameterType(doclet.returns[0].type),
|
49 | description: dfm.convertLinkToGfm(doclet.returns[0].description, uidPrefix),
|
50 | optional: doclet.returns[0].optional
|
51 | };
|
52 | }
|
53 |
|
54 |
|
55 |
|
56 |
|
57 |
|
58 | item.syntax.content = (item.type === 'Function' ? 'function ' : 'new ') + item.name;
|
59 |
|
60 | function handleParameterType(type) {
|
61 | if (!type) return undefined;
|
62 | return type.names.map(function (n) {
|
63 | if (builtInTypes.indexOf(n.toLowerCase()) == -1) {
|
64 | n = uidPrefix + n;
|
65 | }
|
66 | return n;
|
67 | });
|
68 | }
|
69 | }
|
70 |
|
71 | function handleMember(item, doclet) {
|
72 | item.type = 'Member';
|
73 |
|
74 | item.syntax = {};
|
75 | if (doclet.type != undefined) {
|
76 | item.syntax.return = {
|
77 | type: [doclet.type.names[0]]
|
78 | };
|
79 | }
|
80 |
|
81 | item.syntax.content = item.name;
|
82 | }
|
83 |
|
84 | module.exports = {
|
85 | handleClass: handleClass,
|
86 | handleFunction: handleFunction,
|
87 | handleMember: handleMember
|
88 | };
|
89 | })(); |
\ | No newline at end of file |