jscs
Version:
JavaScript Code Style
78 lines (67 loc) • 1.35 kB
JavaScript
/**
* Requires `'use strict';` statements
*
* Values:
* - `true` for default behavior (require 'use strict' statements for files)
*
* #### Example
*
* ```js
* "requireUseStrict": true
* ```
*
* ##### Valid
*
* ```js
* 'use strict';
* // code
* ```
*
* ```js
* // comment line or block
* 'use strict';
* // code
* ```
*
* ```js
* // comment line or block
*
* 'use strict';
* // code
* ```
*
* ##### Invalid
*
* ```js
* // code
* ```
*/
var assert = require('assert');
module.exports = function() {};
module.exports.prototype = {
configure: function(options) {
if (typeof options !== 'object') {
assert(
options === true,
this.getOptionName() + ' option requires either a true value or an object'
);
var _options = {files: true};
return this.configure(_options);
}
this._checkFiles = (options.files === true);
},
getOptionName: function() {
return 'requireUseStrict';
},
check: function(file, errors) {
var program = file.getProgram();
var directive = program.directives[0];
if (directive) {
return;
}
errors.add(
'`"use strict";` is required at the top of each file',
program
);
}
};