Sha256: 44047edb857909b73ad416f53968363f3421af75fe78c22e23be055938c786c0

Contents?: true

Size: 1.17 KB

Versions: 5

Compression:

Stored size: 1.17 KB

Contents

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.printInt = void 0;
// An @int node is any literal integer in Ruby. They can come in a number of
// bases, and look like the following:
//
// Binary (2)       - 0b0110
// Octal (8)        - 0o34 or 034
// Decimal (10)     - a normal number like 159
// Hexidecimal (16) - 0xac5
//
// If it's a decimal number, it can be optional separated by any number of
// arbitrarily places underscores. This can be useful for dollars and cents
// (34_99), dates (2020_11_30), and normal 3 digit separation (1_222_333).
const printInt = (path) => {
    const { body } = path.getValue();
    // If the number is a base 10 number, is sufficiently large, and is not
    // already formatted with underscores, then add them in in between the
    // numbers every three characters starting from the right.
    if (!body.startsWith("0") && body.length >= 5 && !body.includes("_")) {
        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
        const segments = `  ${body}`.slice((body.length + 2) % 3).match(/.{3}/g);
        return segments.join("_").trim();
    }
    return body;
};
exports.printInt = printInt;

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
prettier-2.0.0 dist/ruby/nodes/ints.js
prettier-2.0.0.pre.rc4 dist/ruby/nodes/ints.js
prettier-2.0.0.pre.rc3 dist/ruby/nodes/ints.js
prettier-2.0.0.pre.rc2 dist/ruby/nodes/ints.js
prettier-2.0.0.pre.rc1 dist/ruby/nodes/ints.js