2021-01-21 16:42:25 +00:00
/ * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* Copyright ( c ) Microsoft Corporation . All rights reserved .
* Licensed under the MIT License . See License . txt in the project root for license information .
* -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- * /
import * as eslint from 'eslint' ;
export = new class ApiEventNaming implements eslint . Rule . RuleModule {
readonly meta : eslint.Rule.RuleMetaData = {
messages : {
2021-11-10 01:55:56 +00:00
comment : 'region comments should start with a camel case identifier, `:`, then either a GH issue link or owner, e.g #region myProposalName: https://github.com/microsoft/vscode/issues/<number>' ,
2021-01-21 16:42:25 +00:00
}
} ;
create ( context : eslint.Rule.RuleContext ) : eslint . Rule . RuleListener {
const sourceCode = context . getSourceCode ( ) ;
return {
[ 'Program' ] : ( _node : any ) = > {
2021-11-10 01:55:56 +00:00
for ( const comment of sourceCode . getAllComments ( ) ) {
2021-01-21 16:42:25 +00:00
if ( comment . type !== 'Line' ) {
continue ;
}
2021-11-10 01:55:56 +00:00
if ( ! /^\s*#region / . test ( comment . value ) ) {
2021-01-21 16:42:25 +00:00
continue ;
}
2021-11-10 01:55:56 +00:00
if ( ! /^\s*#region ([a-z]+): (@[a-z]+|https:\/\/github.com\/microsoft\/vscode\/issues\/\d+)/i . test ( comment . value ) ) {
2021-01-21 16:42:25 +00:00
context . report ( {
node : < any > comment ,
messageId : 'comment' ,
} ) ;
}
}
}
} ;
}
} ;