codtracker-js/node_modules/eslint/lib/rules/no-floating-decimal.js
2025-04-19 23:12:19 -04:00

96 lines
2.8 KiB
JavaScript

/**
* @fileoverview Rule to flag use of a leading/trailing decimal point in a numeric literal
* @author James Allardice
* @deprecated in ESLint v8.53.0
*/
'use strict';
//------------------------------------------------------------------------------
// Requirements
//------------------------------------------------------------------------------
const astUtils = require('./utils/ast-utils');
//------------------------------------------------------------------------------
// Rule Definition
//------------------------------------------------------------------------------
/** @type {import('../types').Rule.RuleModule} */
module.exports = {
meta: {
deprecated: {
message: 'Formatting rules are being moved out of ESLint core.',
url: 'https://eslint.org/blog/2023/10/deprecating-formatting-rules/',
deprecatedSince: '8.53.0',
availableUntil: '10.0.0',
replacedBy: [
{
message:
'ESLint Stylistic now maintains deprecated stylistic core rules.',
url: 'https://eslint.style/guide/migration',
plugin: {
name: '@stylistic/eslint-plugin-js',
url: 'https://eslint.style/packages/js',
},
rule: {
name: 'no-floating-decimal',
url: 'https://eslint.style/rules/js/no-floating-decimal',
},
},
],
},
type: 'suggestion',
docs: {
description:
'Disallow leading or trailing decimal points in numeric literals',
recommended: false,
url: 'https://eslint.org/docs/latest/rules/no-floating-decimal',
},
schema: [],
fixable: 'code',
messages: {
leading: 'A leading decimal point can be confused with a dot.',
trailing: 'A trailing decimal point can be confused with a dot.',
},
},
create(context) {
const sourceCode = context.sourceCode;
return {
Literal(node) {
if (typeof node.value === 'number') {
if (node.raw.startsWith('.')) {
context.report({
node,
messageId: 'leading',
fix(fixer) {
const tokenBefore = sourceCode.getTokenBefore(node);
const needsSpaceBefore =
tokenBefore &&
tokenBefore.range[1] === node.range[0] &&
!astUtils.canTokensBeAdjacent(tokenBefore, `0${node.raw}`);
return fixer.insertTextBefore(
node,
needsSpaceBefore ? ' 0' : '0'
);
},
});
}
if (node.raw.indexOf('.') === node.raw.length - 1) {
context.report({
node,
messageId: 'trailing',
fix: (fixer) => fixer.insertTextAfter(node, '0'),
});
}
}
},
};
},
};