@@ -8,8 +8,8 @@ const defaultOptions = {
88 // recognize lang of CodeBlock
99 "langs" : [ "js" , "javascript" , "node" , "jsx" ]
1010} ;
11- module . exports = function ( context , options ) {
12- const { Syntax, RuleError, report, getSource} = context ;
11+ const reporter = ( context , options ) => {
12+ const { Syntax, RuleError, report, fixer , getSource} = context ;
1313 if ( ! options . configFile ) {
1414 throw new Error ( `Require options: { "configFile": "path/to/.eslintrc" }` ) ;
1515 }
@@ -27,6 +27,7 @@ module.exports = function(context, options) {
2727 if ( availableLang . indexOf ( node . lang ) === - 1 ) {
2828 return ;
2929 }
30+ const raw = getSource ( node ) ;
3031 const code = node . value ;
3132 const resultLinting = engine . executeOnText ( code , extname ) ;
3233 if ( resultLinting . errorCount === 0 ) {
@@ -43,13 +44,29 @@ module.exports = function(context, options) {
4344
4445 ESLint message line and column start with 1
4546 */
46- const error = new RuleError ( `${ message . ruleId } : ${ message . message } ` , {
47- line : message . line ,
48- column : message . column - 1
49- } ) ;
50- report ( node , error ) ;
47+ if ( message . fix ) {
48+ const paddingIndex = raw . indexOf ( code ) ;
49+ const fixedRange = message . fix . range ;
50+ const fixedText = message . fix . text ;
51+ const fixedWithPadding = [ fixedRange [ 0 ] + paddingIndex , fixedRange [ 1 ] + paddingIndex ] ;
52+ report ( node , new RuleError ( `${ message . ruleId } : ${ message . message } ` , {
53+ line : message . line ,
54+ column : message . column - 1 ,
55+ fix : fixer . replaceTextRange ( fixedWithPadding , fixedText )
56+ } ) ) ;
57+ } else {
58+ report ( node , new RuleError ( `${ message . ruleId } : ${ message . message } ` , {
59+ line : message . line ,
60+ column : message . column - 1
61+ } ) ) ;
62+ }
63+
5164 } ) ;
5265 } ) ;
5366 }
5467 }
68+ } ;
69+ module . exports = {
70+ linter : reporter ,
71+ fixer : reporter
5572} ;
0 commit comments