123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- /**
- * @module plugins/sourcetag
- */
- 'use strict';
- var logger = require('jsdoc/util/logger');
- exports.handlers = {
- /**
- * Support @source tag. Expected value like:
- *
- * { "filename": "myfile.js", "lineno": 123 }
- *
- * Modifies the corresponding meta values on the given doclet.
- *
- * WARNING: If you are using a JSDoc template that generates pretty-printed source files,
- * such as JSDoc's default template, this plugin can cause JSDoc to crash. To fix this issue,
- * update your template settings to disable pretty-printed source files.
- *
- * @source { "filename": "sourcetag.js", "lineno": 9 }
- */
- newDoclet: function(e) {
- var tags = e.doclet.tags;
- var tag;
- var value;
- // any user-defined tags in this doclet?
- if (typeof tags !== 'undefined') {
- // only interested in the @source tags
- tags = tags.filter(function($) {
- return $.title === 'source';
- });
- if (tags.length) {
- // take the first one
- tag = tags[0];
- try {
- value = JSON.parse(tag.value);
- }
- catch (ex) {
- logger.error('@source tag expects a valid JSON value, like { "filename": "myfile.js", "lineno": 123 }.');
- return;
- }
- e.doclet.meta = e.doclet.meta || {};
- e.doclet.meta.filename = value.filename || '';
- e.doclet.meta.lineno = value.lineno || '';
- }
- }
- }
- };
|