Skip to content

Commit 8723a27

Browse files
committed
修复jsdoc 表述链接不可用问题,修复property没有默认值的问题 。
leaflet的点线面绘制例子移动至控件分类下
1 parent d3d843c commit 8723a27

File tree

5 files changed

+136
-124
lines changed

5 files changed

+136
-124
lines changed

build/jsdocs/plugins/linkdoc.js

Lines changed: 24 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,45 +3,37 @@
33
var logger = require('jsdoc/util/logger');
44
var env = require('jsdoc/env');
55
var typeLinks = require('../template/typeLinkExt').typeLinks;
6+
var parseLink = function (str) {
7+
if (str && str.indexOf("@link") >= 0) {
8+
const patt = /{@link (\S*)}/g;
9+
let result;
10+
while ((result = patt.exec(str)) != null) {
11+
const link = result[1];
12+
if (link && typeLinks[link]) {
13+
str = str.replace(result[0], "[" + link + "]{@link " + typeLinks[result[1]] + "}");
14+
}
15+
}
16+
}
17+
return str;
18+
}
619
exports.handlers = {
20+
721
newDoclet: function (e) {
22+
e.doclet.classdesc = parseLink(e.doclet.classdesc);
23+
e.doclet.description = parseLink(e.doclet.description);
24+
if (e.doclet.returns) {
25+
for (let i = 0; i < e.doclet.returns.length; i++) {
26+
e.doclet.returns[i].description = parseLink(e.doclet.returns[i].description);
27+
}
28+
}
829
if (e.doclet.augments) {
9-
for (var i = 0; i < e.doclet.augments.length; i++) {
10-
var a = e.doclet.augments[i];
11-
if (a.indexOf("@linkdoc")) {
12-
var reg = new RegExp("@(linkdoc.*?)/");
13-
var match = a.match(reg);
14-
if (match) {
15-
e.doclet.augments[i] = a.replace("@" + match[1] + "/", env.conf.tags[match[1]]);
16-
if (env.conf.tags["linkdoc-htmlExtension"]) {
17-
e.doclet.augments[i] = e.doclet.augments[i].replace("}", ".html}");
18-
}
19-
}
20-
21-
}
30+
for (let i = 0; i < e.doclet.augments.length; i++) {
31+
e.doclet.augments[i] = parseLink(e.doclet.augments[i]);
2232
}
2333
}
2434
if (e.doclet.params) {
2535
for (var i = 0; i < e.doclet.params.length; i++) {
26-
var a = e.doclet.params[i].description;
27-
if (a && a.indexOf("@linkdoc") > -1) {
28-
var reg = new RegExp("@(linkdoc.*?)/");
29-
var match = a.match(reg);
30-
if (match) {
31-
var str = "@" + match[1] + "/";
32-
e.doclet.params[i].description = a.replace(new RegExp(str, 'g'), "@link " + env.conf.tags[match[1]]);
33-
}
34-
} else if (a && a.indexOf("@link") > -1) {
35-
var patt = /{@link (\S*)}/g;
36-
var result;
37-
while ((result = patt.exec(a)) != null) {
38-
var link = result[1];
39-
if (link && typeLinks[link]) {
40-
e.doclet.params[i].description = e.doclet.params[i].description.replace(result[0], "[" + link + "]{@link " + typeLinks[result[1]] + "}");
41-
}
42-
}
43-
}
44-
36+
e.doclet.params[i].description = parseLink(e.doclet.params[i].description);
4537
}
4638
}
4739
}

build/jsdocs/template/publish.js

Lines changed: 87 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ var template = require('jsdoc/template'),
77
handle = require('jsdoc/util/error').handle,
88
helper = require('jsdoc/util/templateHelper'),
99
logger = require('jsdoc/util/logger'),
10-
typeLinks= require('./typeLinkExt').typeLinks,
11-
10+
typeLinks = require('./typeLinkExt').typeLinks,
11+
1212
_ = require('underscore'),
1313
htmlsafe = helper.htmlsafe,
1414
linkto = helper.linkto,
@@ -19,21 +19,28 @@ var template = require('jsdoc/template'),
1919
view,
2020
language,
2121
outdir = env.opts.destination;
22-
var util = require('util');
22+
var util = require('util');
23+
2324
function find(spec) {
2425
return helper.find(data, spec);
2526
}
2627

2728
function tutoriallink(tutorial) {
28-
return helper.toTutorial(tutorial, null, { tag: 'em', classname: 'disabled', prefix: 'Tutorial: ' });
29+
return helper.toTutorial(tutorial, null, {
30+
tag: 'em',
31+
classname: 'disabled',
32+
prefix: 'Tutorial: '
33+
});
2934
}
3035

3136
function getAncestorLinks(doclet) {
3237
return helper.getAncestorLinks(data, doclet);
3338
}
3439

3540
function hashToLink(doclet, hash) {
36-
if (!/^(#.+)/.test(hash)) { return hash; }
41+
if (!/^(#.+)/.test(hash)) {
42+
return hash;
43+
}
3744

3845
var url = helper.createLink(doclet);
3946

@@ -111,6 +118,7 @@ function getPathFromDoclet(doclet) {
111118

112119
return filepath;
113120
}
121+
114122
function generateNav(navObject) {
115123

116124
// var docData = {
@@ -131,14 +139,17 @@ function generateNav(navObject) {
131139

132140
fs.writeFileSync(outpath, html, 'utf8');
133141
}
142+
134143
function generate(title, docs, filename, resolveLinks) {
135144
resolveLinks = resolveLinks === false ? false : true;
136145

137146
var docData = {
138147
filename: filename,
139148
title: title,
140149
docs: docs,
141-
packageInfo: (find({ kind: 'package' }) || [])[0]
150+
packageInfo: (find({
151+
kind: 'package'
152+
}) || [])[0]
142153
};
143154

144155
var outpath = path.join(outdir, filename),
@@ -150,6 +161,7 @@ function generate(title, docs, filename, resolveLinks) {
150161

151162
fs.writeFileSync(outpath, html, 'utf8');
152163
}
164+
153165
function getCustomTagValue(item, title) {
154166
var tags = item.tags;
155167
if (!tags || !tags.length) {
@@ -162,6 +174,7 @@ function getCustomTagValue(item, title) {
162174
}
163175
return null;
164176
}
177+
165178
function generateSourceFiles(sourceFiles) {
166179
Object.keys(sourceFiles).forEach(function (file) {
167180
var source;
@@ -174,8 +187,7 @@ function generateSourceFiles(sourceFiles) {
174187
kind: 'source',
175188
code: helper.htmlsafe(fs.readFileSync(sourceFiles[file].resolved, 'utf8'))
176189
};
177-
}
178-
catch (e) {
190+
} catch (e) {
179191
handle(e);
180192
}
181193

@@ -237,37 +249,29 @@ function sortNav(members) {
237249
});
238250
return merged;
239251
}
252+
240253
function buildCategories(members, templatePath) {
241254
var categories = {};
242-
if (language === 'en') {
243-
var exists = fs.existsSync(path.resolve(templatePath, "categories.json"));
244-
if (exists) {
245-
categories = JSON.parse(fs.readFileSync(path.resolve(templatePath, "categories.json")));
246-
} else {
247-
logger.error('Please generate a Chinese JSdoc first')
255+
_.each(members, function (v) {
256+
257+
var category = getCustomTagValue(v, 'category');
258+
if (!category) {
259+
category = "BaseTypes";
248260
}
249-
} else {
250-
_.each(members, function (v) {
251-
252-
var category = getCustomTagValue(v, 'category');
253-
if (!category) {
254-
category = "BaseTypes";
261+
var arr = category.split(" ");
262+
var aa = categories;
263+
for (let index = 0; index < arr.length; index++) {
264+
const element = arr[index];
265+
if (!aa[element]) {
266+
aa[element] = {};
267+
aa[element].default = [];
255268
}
256-
var arr = category.split(" ");
257-
var aa = categories;
258-
for (let index = 0; index < arr.length; index++) {
259-
const element = arr[index];
260-
if (!aa[element]) {
261-
aa[element] = {};
262-
aa[element].default = [];
263-
}
264-
aa = aa[element];
265-
}
266-
aa.default.push(v.longname);
267-
});
268-
var outpath = path.resolve(templatePath, "categories.json");
269-
fs.writeFileSync(outpath, JSON.stringify(categories), 'utf8');
270-
}
269+
aa = aa[element];
270+
}
271+
aa.default.push(v.longname);
272+
});
273+
var outpath = path.resolve(templatePath, "categories.json");
274+
fs.writeFileSync(outpath, JSON.stringify(categories), 'utf8');
271275
return categories;
272276
}
273277

@@ -366,7 +370,7 @@ exports.publish = function (taffyData, opts, tutorials) {
366370

367371
var globalUrl = helper.getUniqueFilename('global');
368372
helper.registerLink('global', globalUrl);
369-
view.typeLinks=typeLinks;
373+
view.typeLinks = typeLinks;
370374
// set up templating
371375
view.layout = 'layout.tmpl';
372376

@@ -417,7 +421,9 @@ exports.publish = function (taffyData, opts, tutorials) {
417421
}
418422
});
419423
// update outdir if necessary, then create outdir
420-
var packageInfo = (find({ kind: 'package' }) || [])[0];
424+
var packageInfo = (find({
425+
kind: 'package'
426+
}) || [])[0];
421427
if (packageInfo && packageInfo.name) {
422428
outdir = path.join(outdir, packageInfo.name, packageInfo.version);
423429
}
@@ -439,8 +445,8 @@ exports.publish = function (taffyData, opts, tutorials) {
439445
var staticFileScanner;
440446
if (conf['default'].staticFiles) {
441447
staticFilePaths = conf['default'].staticFiles.paths || [];
442-
staticFileFilter = new (require('jsdoc/src/filter')).Filter(conf['default'].staticFiles);
443-
staticFileScanner = new (require('jsdoc/src/scanner')).Scanner();
448+
staticFileFilter = new(require('jsdoc/src/filter')).Filter(conf['default'].staticFiles);
449+
staticFileScanner = new(require('jsdoc/src/scanner')).Scanner();
444450

445451
staticFilePaths.forEach(function (filePath) {
446452
var extraStaticFiles = staticFileScanner.scan([filePath], 10, staticFileFilter);
@@ -478,8 +484,7 @@ exports.publish = function (taffyData, opts, tutorials) {
478484

479485
if (url.indexOf('#') > -1) {
480486
doclet.id = helper.longnameToUrl[doclet.longname].split(/#/).pop();
481-
}
482-
else {
487+
} else {
483488
doclet.id = doclet.name;
484489
}
485490

@@ -491,7 +496,7 @@ exports.publish = function (taffyData, opts, tutorials) {
491496

492497
// do this after the urls have all been generated
493498
data().each(function (doclet) {
494-
499+
495500
doclet.ancestors = getAncestorLinks(doclet);
496501
if (doclet.kind === 'member') {
497502
addSignatureTypes(doclet);
@@ -501,7 +506,7 @@ exports.publish = function (taffyData, opts, tutorials) {
501506
addSignatureTypes(doclet);
502507
var attribs = helper.getAttribs(doclet);
503508
var attribsString = buildAttribsString(attribs);
504-
509+
505510
doclet.attribs = util.format('<span class="type-signature">%s</span>', attribsString);
506511
doclet.kind = 'member';
507512
}
@@ -529,7 +534,12 @@ exports.publish = function (taffyData, opts, tutorials) {
529534
view.navOrder = JSON.parse(fs.readFileSync(path.resolve(templatePath, "./config.json")));
530535
view.language = language;
531536
generateNav(view.nav);
532-
attachModuleSymbols(find({ kind: ['class', 'function'], longname: { left: 'module:' } }),
537+
attachModuleSymbols(find({
538+
kind: ['class', 'function'],
539+
longname: {
540+
left: 'module:'
541+
}
542+
}),
533543
members.modules);
534544

535545
// only output pretty-printed source files if requested; do this before generating any other
@@ -538,13 +548,22 @@ exports.publish = function (taffyData, opts, tutorials) {
538548
generateSourceFiles(sourceFiles);
539549
}
540550

541-
if (members.globals.length) { generate('Global', [{ kind: 'globalobj' }], globalUrl); }
551+
if (members.globals.length) {
552+
generate('Global', [{
553+
kind: 'globalobj'
554+
}], globalUrl);
555+
}
542556

543557
// index page displays information from package.json and lists files
544-
var files = find({ kind: 'file' });
558+
var files = find({
559+
kind: 'file'
560+
});
545561

546-
generate('Index',
547-
[{ kind: 'mainpage', readme: opts.readme, longname: (opts.mainpagetitle) ? opts.mainpagetitle : 'Main Page' }].concat(files),
562+
generate('Index', [{
563+
kind: 'mainpage',
564+
readme: opts.readme,
565+
longname: (opts.mainpagetitle) ? opts.mainpagetitle : 'Main Page'
566+
}].concat(files),
548567
indexUrl);
549568

550569
// set up the lists that we'll use to generate pages
@@ -556,27 +575,37 @@ exports.publish = function (taffyData, opts, tutorials) {
556575

557576
for (var longname in helper.longnameToUrl) {
558577
if (hasOwnProp.call(helper.longnameToUrl, longname)) {
559-
var myClasses = helper.find(classes, { longname: longname });
578+
var myClasses = helper.find(classes, {
579+
longname: longname
580+
});
560581
if (myClasses.length) {
561582
generate('Class: ' + myClasses[0].name, myClasses, helper.longnameToUrl[longname]);
562583
}
563584

564-
var myModules = helper.find(modules, { longname: longname });
585+
var myModules = helper.find(modules, {
586+
longname: longname
587+
});
565588
if (myModules.length) {
566589
generate('Module: ' + myModules[0].name, myModules, helper.longnameToUrl[longname]);
567590
}
568591

569-
var myNamespaces = helper.find(namespaces, { longname: longname });
592+
var myNamespaces = helper.find(namespaces, {
593+
longname: longname
594+
});
570595
if (myNamespaces.length) {
571596
generate('Namespace: ' + myNamespaces[0].name, myNamespaces, helper.longnameToUrl[longname]);
572597
}
573598

574-
var myMixins = helper.find(mixins, { longname: longname });
599+
var myMixins = helper.find(mixins, {
600+
longname: longname
601+
});
575602
if (myMixins.length) {
576603
generate('Mixin: ' + myMixins[0].name, myMixins, helper.longnameToUrl[longname]);
577604
}
578605

579-
var myExternals = helper.find(externals, { longname: longname });
606+
var myExternals = helper.find(externals, {
607+
longname: longname
608+
});
580609
if (myExternals.length) {
581610
generate('External: ' + myExternals[0].name, myExternals, helper.longnameToUrl[longname]);
582611
}
@@ -609,13 +638,14 @@ exports.publish = function (taffyData, opts, tutorials) {
609638
});
610639
}
611640
saveChildren(tutorials);
641+
612642
function buildAttribsString(attribs) {
613643
var attribsString = '';
614-
644+
615645
if (attribs && attribs.length) {
616-
attribsString = htmlsafe( util.format('(%s) ', attribs.join(', ')) );
646+
attribsString = htmlsafe(util.format('(%s) ', attribs.join(', ')));
617647
}
618-
648+
619649
return attribsString;
620650
}
621-
};
651+
};

build/jsdocs/template/tmpl/params.tmpl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
<?js
22
var params = obj;
3-
43
/* sort subparams under their parent params (like opts.classname) */
54
var parentParam = null;
65
params.forEach(function(param, i) {

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy