/* eslint-env node */ 'use strict'; module.exports = { plugins: ['plugins/markdown'], markdown: { // "The highlighter function should escape the code block's contents and wrap them in
 tags"
    highlight (code, language) {
      function ret () {
        // Default:
        return '
' + code + ' in this language: ' + language + '
'; } if (language !== 'js') { // E.g., we have one URL in some tutorial Markdown return ret(); } // Programmatic ESLint API: https://eslint.org/docs/developer-guide/nodejs-api const {CLIEngine} = require('eslint'); const cli = new CLIEngine({ useEslintrc: true, rules: { 'no-undef': 0, // Many variables in examples will be undefined 'padded-blocks': 0 // Can look nicer } }); // Undo escaping done by node_modules/jsdoc/lib/jsdoc/util/markdown.js code = code .replace(/\s+$/, '') .replace(/'/g, "'") .replace(/(https?):\\\/\\\//g, '$1://') .replace(/\{@[^}\r\n]+\}/g, function (wholeMatch) { return wholeMatch.replace(/"/g, '"'); }); // lint the supplied text and optionally set // a filename that is displayed in the report const report = cli.executeOnText(code + '\n'); if (!report.errorCount && !report.warningCount) { return ret(); } // Although we don't get the file, at least we can report the source code const {messages} = report.results[0]; messages.forEach(({message, line, column, severity, ruleId}) => { console.log(`${ruleId}: ${message} (Severity: ${severity}; ${line}:${column})`); }); console.log('\n' + code); return ret(); }, tags: [] }, recurseDepth: 10, source: { exclude: [ 'node_modules', 'dist', 'firefox-extension', 'opera-widget', 'screencasts', 'test' ], excludePattern: 'svgedit-config-*|build-html.js|rollup*|external/babel-polyfill|extensions/mathjax|imagelib/jquery.min.js|jspdf/jspdf.min.js|jspdf/underscore-min.js|jquery-ui|jquery.min.js|jquerybbq|js-hotkeys' }, sourceType: 'module', tags: { allowUnknownTags: false }, templates: { cleverLinks: true, monospaceLinks: false, default: { layoutFile: 'docs/layout.tmpl' } }, opts: { recurse: true, verbose: true, destination: 'docs/jsdoc', tutorials: 'docs/tutorials' } };