12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- 'use strict';
- const {methodCallSelector, not} = require('./selectors/index.js');
- const {appendArgument} = require('./fix/index.js');
- const MESSAGE_ID = 'require-number-to-fixed-digits-argument';
- const messages = {
- [MESSAGE_ID]: 'Missing the digits argument.',
- };
- const mathToFixed = [
- methodCallSelector({
- method: 'toFixed',
- argumentsLength: 0,
- }),
- not('[callee.object.type="NewExpression"]'),
- ].join('');
- /** @param {import('eslint').Rule.RuleContext} context */
- const create = context => {
- const sourceCode = context.getSourceCode();
- return {
- [mathToFixed](node) {
- const [
- openingParenthesis,
- closingParenthesis,
- ] = sourceCode.getLastTokens(node, 2);
- return {
- loc: {
- start: openingParenthesis.loc.start,
- end: closingParenthesis.loc.end,
- },
- messageId: MESSAGE_ID,
- /** @param {import('eslint').Rule.RuleFixer} fixer */
- fix: fixer => appendArgument(fixer, node, '0', sourceCode),
- };
- },
- };
- };
- /** @type {import('eslint').Rule.RuleModule} */
- module.exports = {
- create,
- meta: {
- type: 'suggestion',
- docs: {
- description: 'Enforce using the digits argument with `Number#toFixed()`.',
- },
- fixable: 'code',
- messages,
- },
- };
|