Skip to content

Commit 16d2bce

Browse files
committed
Update remark plugin to allow enabling of doctests
1 parent bec8625 commit 16d2bce

File tree

2 files changed

+14
-0
lines changed
  • etc/remark/plugins/eslint
  • lib/node_modules/@stdlib/_tools/remark/plugins/remark-lint-eslint/lib

2 files changed

+14
-0
lines changed

etc/remark/plugins/eslint/index.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ var config = join( etc, 'eslint', '.eslintrc.markdown.js' );
3131
var eslint = resolve( etc, '..', 'lib', 'node_modules', '@stdlib', '_tools', 'remark', 'plugins', 'remark-lint-eslint' );
3232
var opts = {
3333
'config': config,
34+
'rules': {
35+
'stdlib/doctest': 'error' // enable otherwise disabled lint rule
36+
},
3437
'ignore': false,
3538
'useEslintrc': false
3639
};

lib/node_modules/@stdlib/_tools/remark/plugins/remark-lint-eslint/lib/factory.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ var rule = require( 'unified-lint-rule' );
2525
var visit = require( 'unist-util-visit' );
2626
var Engine = require( 'eslint' ).CLIEngine;
2727
var cwd = require( '@stdlib/process/cwd' );
28+
var contains = require( '@stdlib/assert/contains' );
2829
var hasOwnProp = require( '@stdlib/assert/has-own-property' );
2930
var isObject = require( '@stdlib/assert/is-plain-object' );
3031
var transformHTML = require( './transform_html.js' );
@@ -60,6 +61,9 @@ function factory( options ) {
6061
if ( hasOwnProp( options, 'config' ) ) {
6162
opts.configFile = resolve( cwd(), options.config );
6263
}
64+
if ( hasOwnProp( options, 'rules' ) ) {
65+
opts.rules = options.rules;
66+
}
6367
if ( hasOwnProp( options, 'ignore' ) ) {
6468
opts.ignore = options.ignore;
6569
}
@@ -81,6 +85,7 @@ function factory( options ) {
8185
* @param {Callback} clbk - callback
8286
*/
8387
function lint( tree, file ) {
88+
var FIRST;
8489
visit( tree, 'code', onNode );
8590

8691
/**
@@ -106,6 +111,9 @@ function factory( options ) {
106111
var j;
107112

108113
if ( node.lang === 'javascript' || node.lang === 'js' ) {
114+
if ( !FIRST ) {
115+
FIRST = node.value;
116+
}
109117
// Look for HTML comments immediately preceding a code block which may contain ESLint configuration...
110118
idx -= 1;
111119
prev = parent.children[ idx ];
@@ -127,6 +135,9 @@ function factory( options ) {
127135
code = comments.join( '\n' );
128136

129137
// Lint the code block...
138+
if ( !contains( code, FIRST ) ) {
139+
code = FIRST + '\n' + code;
140+
}
130141
report = cli.executeOnText( code );
131142
for ( i = 0; i < report.results.length; i++ ) {
132143
result = report.results[ i ];

0 commit comments

Comments
 (0)