JavaScript: Break arrays of arrays/objects if each element has more than one element/property (#6694)
* Modify to define isJestEachFunctionCall * Modify to break ArrayExpression when parent is jest each function * Add tests * Update CHANGELOG.unreleased.md * Fix comment * Add pr number * Update CHANGELOG.unreleased.md * Remove hasNewLineInRange * Modify to change logic for breaking jest each call function * Modify to add logic for breaking ArrayExpression * Modify to avoid mixed nested array * Modify to remove changes for jest * Update CHANGELOG.unreleased.md * Update CHANGELOG.unreleased.mdmaster
parent
69b481758c
commit
f207e665bc
|
@ -1082,6 +1082,62 @@ sometimes{{nogaps}}areimportant
|
||||||
{{name}} is your name
|
{{name}} is your name
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### JavaScript: Break arrays of arrays/objects if each element has more than one element/property ([#6694] by [@sosukesuzuki])
|
||||||
|
|
||||||
|
<!-- prettier-ignore -->
|
||||||
|
```js
|
||||||
|
// Input
|
||||||
|
test.each([
|
||||||
|
{ a: "1", b: 1 },
|
||||||
|
{ a: "2", b: 2 },
|
||||||
|
{ a: "3", b: 3 }
|
||||||
|
])("test", ({ a, b }) => {
|
||||||
|
expect(Number(a)).toBe(b);
|
||||||
|
});
|
||||||
|
[[0, 1, 2], [0, 1, 2]];
|
||||||
|
new Map([
|
||||||
|
[A, B],
|
||||||
|
[C, D],
|
||||||
|
[E, F],
|
||||||
|
[G, H],
|
||||||
|
[I, J],
|
||||||
|
[K, L],
|
||||||
|
[M, N]
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Output (Prettier stable)
|
||||||
|
test.each([{ a: "1", b: 1 }, { a: "2", b: 2 }, { a: "3", b: 3 }])(
|
||||||
|
"test",
|
||||||
|
({ a, b }) => {
|
||||||
|
expect(Number(a)).toBe(b);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
[[0, 1, 2], [0, 1, 2]]
|
||||||
|
new Map([[A, B], [C, D], [E, F], [G, H], [I, J], [K, L], [M, N]]);
|
||||||
|
|
||||||
|
// Output (Prettier master)
|
||||||
|
test.each([
|
||||||
|
{ a: "1", b: 1 },
|
||||||
|
{ a: "2", b: 2 },
|
||||||
|
{ a: "3", b: 3 }
|
||||||
|
])("test", ({ a, b }) => {
|
||||||
|
expect(Number(a)).toBe(b);
|
||||||
|
});
|
||||||
|
[
|
||||||
|
[0, 1, 2],
|
||||||
|
[0, 1, 2]
|
||||||
|
];
|
||||||
|
new Map([
|
||||||
|
[A, B],
|
||||||
|
[C, D],
|
||||||
|
[E, F],
|
||||||
|
[G, H],
|
||||||
|
[I, J],
|
||||||
|
[K, L],
|
||||||
|
[M, N]
|
||||||
|
]);
|
||||||
|
```
|
||||||
|
|
||||||
[#5682]: https://github.com/prettier/prettier/pull/5682
|
[#5682]: https://github.com/prettier/prettier/pull/5682
|
||||||
[#5910]: https://github.com/prettier/prettier/pull/5910
|
[#5910]: https://github.com/prettier/prettier/pull/5910
|
||||||
[#6033]: https://github.com/prettier/prettier/pull/6033
|
[#6033]: https://github.com/prettier/prettier/pull/6033
|
||||||
|
@ -1121,6 +1177,7 @@ sometimes{{nogaps}}areimportant
|
||||||
[#6646]: https://github.com/prettier/prettier/pull/6646
|
[#6646]: https://github.com/prettier/prettier/pull/6646
|
||||||
[#6666]: https://github.com/prettier/prettier/pull/6666
|
[#6666]: https://github.com/prettier/prettier/pull/6666
|
||||||
[#6673]: https://github.com/prettier/prettier/pull/6673
|
[#6673]: https://github.com/prettier/prettier/pull/6673
|
||||||
|
[#6694]: https://github.com/prettier/prettier/pull/6694
|
||||||
[@brainkim]: https://github.com/brainkim
|
[@brainkim]: https://github.com/brainkim
|
||||||
[@duailibe]: https://github.com/duailibe
|
[@duailibe]: https://github.com/duailibe
|
||||||
[@gavinjoyce]: https://github.com/gavinjoyce
|
[@gavinjoyce]: https://github.com/gavinjoyce
|
||||||
|
|
|
@ -1514,6 +1514,28 @@ function printPathNoParens(path, options, print, args) {
|
||||||
const needsForcedTrailingComma =
|
const needsForcedTrailingComma =
|
||||||
canHaveTrailingComma && lastElem === null;
|
canHaveTrailingComma && lastElem === null;
|
||||||
|
|
||||||
|
const shouldBreak =
|
||||||
|
n.elements.length > 1 &&
|
||||||
|
n.elements.every((element, i, elements) => {
|
||||||
|
const elementType = element && element.type;
|
||||||
|
if (
|
||||||
|
elementType !== "ArrayExpression" &&
|
||||||
|
elementType !== "ObjectExpression"
|
||||||
|
) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const nextElement = elements[i + 1];
|
||||||
|
if (nextElement && elementType !== nextElement.type) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const itemsKey =
|
||||||
|
elementType === "ArrayExpression" ? "elements" : "properties";
|
||||||
|
|
||||||
|
return element[itemsKey] && element[itemsKey].length > 1;
|
||||||
|
});
|
||||||
|
|
||||||
parts.push(
|
parts.push(
|
||||||
group(
|
group(
|
||||||
concat([
|
concat([
|
||||||
|
@ -1539,7 +1561,8 @@ function printPathNoParens(path, options, print, args) {
|
||||||
),
|
),
|
||||||
softline,
|
softline,
|
||||||
"]"
|
"]"
|
||||||
])
|
]),
|
||||||
|
{ shouldBreak }
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,116 @@ printWidth: 80
|
||||||
================================================================================
|
================================================================================
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
exports[`nested.js 1`] = `
|
||||||
|
====================================options=====================================
|
||||||
|
parsers: ["flow", "typescript"]
|
||||||
|
printWidth: 80
|
||||||
|
| printWidth
|
||||||
|
=====================================input======================================
|
||||||
|
[[]];
|
||||||
|
[[], []];
|
||||||
|
[[], [], []];
|
||||||
|
[[], [0], []];
|
||||||
|
[[], [0], [0]];
|
||||||
|
[[], [0, 1], [0]];
|
||||||
|
[[], [0, 1], [0, 1]];
|
||||||
|
[[0]];
|
||||||
|
[[0], []];
|
||||||
|
[[0], [], []];
|
||||||
|
[[0], [0], []];
|
||||||
|
[[0], [0], [0]];
|
||||||
|
[[0], [0, 1], [0]];
|
||||||
|
[[0], [0, 1], [0, 1]];
|
||||||
|
[[0, 1]];
|
||||||
|
[[0, 1], []];
|
||||||
|
[[0, 1], [], []];
|
||||||
|
[[0, 1], [0], []];
|
||||||
|
[[0, 1], [0], [0]];
|
||||||
|
[[0, 1], [0, 1], [0]];
|
||||||
|
[[0, 1], [0, 1], [0, 1]];
|
||||||
|
[[], [1, 2, 3]];
|
||||||
|
[[1], [1]];
|
||||||
|
[[1, 2], [1, 2, 3]];
|
||||||
|
[[1, 0], [1, 0]];
|
||||||
|
[{}];
|
||||||
|
[{}, {}];
|
||||||
|
[{}, {}, {}];
|
||||||
|
[{}, { a }];
|
||||||
|
[{}, { a, b }];
|
||||||
|
[{}, { a, b, c }];
|
||||||
|
[{ a }];
|
||||||
|
[{ a }, { a }];
|
||||||
|
[{ a }, { a }, { a }];
|
||||||
|
[{ a }, { a, b }];
|
||||||
|
[{ a }, { a, b, c}];
|
||||||
|
[{ a, b }];
|
||||||
|
[{ a, b }, { a }];
|
||||||
|
[{ a, b }, { a }, { a }];
|
||||||
|
[{ a, b }, { a, b }];
|
||||||
|
[{ a, b }, { a, b, c }];
|
||||||
|
|
||||||
|
=====================================output=====================================
|
||||||
|
[[]];
|
||||||
|
[[], []];
|
||||||
|
[[], [], []];
|
||||||
|
[[], [0], []];
|
||||||
|
[[], [0], [0]];
|
||||||
|
[[], [0, 1], [0]];
|
||||||
|
[[], [0, 1], [0, 1]];
|
||||||
|
[[0]];
|
||||||
|
[[0], []];
|
||||||
|
[[0], [], []];
|
||||||
|
[[0], [0], []];
|
||||||
|
[[0], [0], [0]];
|
||||||
|
[[0], [0, 1], [0]];
|
||||||
|
[[0], [0, 1], [0, 1]];
|
||||||
|
[[0, 1]];
|
||||||
|
[[0, 1], []];
|
||||||
|
[[0, 1], [], []];
|
||||||
|
[[0, 1], [0], []];
|
||||||
|
[[0, 1], [0], [0]];
|
||||||
|
[[0, 1], [0, 1], [0]];
|
||||||
|
[
|
||||||
|
[0, 1],
|
||||||
|
[0, 1],
|
||||||
|
[0, 1]
|
||||||
|
];
|
||||||
|
[[], [1, 2, 3]];
|
||||||
|
[[1], [1]];
|
||||||
|
[
|
||||||
|
[1, 2],
|
||||||
|
[1, 2, 3]
|
||||||
|
];
|
||||||
|
[
|
||||||
|
[1, 0],
|
||||||
|
[1, 0]
|
||||||
|
];
|
||||||
|
[{}];
|
||||||
|
[{}, {}];
|
||||||
|
[{}, {}, {}];
|
||||||
|
[{}, { a }];
|
||||||
|
[{}, { a, b }];
|
||||||
|
[{}, { a, b, c }];
|
||||||
|
[{ a }];
|
||||||
|
[{ a }, { a }];
|
||||||
|
[{ a }, { a }, { a }];
|
||||||
|
[{ a }, { a, b }];
|
||||||
|
[{ a }, { a, b, c }];
|
||||||
|
[{ a, b }];
|
||||||
|
[{ a, b }, { a }];
|
||||||
|
[{ a, b }, { a }, { a }];
|
||||||
|
[
|
||||||
|
{ a, b },
|
||||||
|
{ a, b }
|
||||||
|
];
|
||||||
|
[
|
||||||
|
{ a, b },
|
||||||
|
{ a, b, c }
|
||||||
|
];
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
`;
|
||||||
|
|
||||||
exports[`preserve_empty_lines.js 1`] = `
|
exports[`preserve_empty_lines.js 1`] = `
|
||||||
====================================options=====================================
|
====================================options=====================================
|
||||||
parsers: ["flow", "typescript"]
|
parsers: ["flow", "typescript"]
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
[[]];
|
||||||
|
[[], []];
|
||||||
|
[[], [], []];
|
||||||
|
[[], [0], []];
|
||||||
|
[[], [0], [0]];
|
||||||
|
[[], [0, 1], [0]];
|
||||||
|
[[], [0, 1], [0, 1]];
|
||||||
|
[[0]];
|
||||||
|
[[0], []];
|
||||||
|
[[0], [], []];
|
||||||
|
[[0], [0], []];
|
||||||
|
[[0], [0], [0]];
|
||||||
|
[[0], [0, 1], [0]];
|
||||||
|
[[0], [0, 1], [0, 1]];
|
||||||
|
[[0, 1]];
|
||||||
|
[[0, 1], []];
|
||||||
|
[[0, 1], [], []];
|
||||||
|
[[0, 1], [0], []];
|
||||||
|
[[0, 1], [0], [0]];
|
||||||
|
[[0, 1], [0, 1], [0]];
|
||||||
|
[[0, 1], [0, 1], [0, 1]];
|
||||||
|
[[], [1, 2, 3]];
|
||||||
|
[[1], [1]];
|
||||||
|
[[1, 2], [1, 2, 3]];
|
||||||
|
[[1, 0], [1, 0]];
|
||||||
|
[{}];
|
||||||
|
[{}, {}];
|
||||||
|
[{}, {}, {}];
|
||||||
|
[{}, { a }];
|
||||||
|
[{}, { a, b }];
|
||||||
|
[{}, { a, b, c }];
|
||||||
|
[{ a }];
|
||||||
|
[{ a }, { a }];
|
||||||
|
[{ a }, { a }, { a }];
|
||||||
|
[{ a }, { a, b }];
|
||||||
|
[{ a }, { a, b, c}];
|
||||||
|
[{ a, b }];
|
||||||
|
[{ a, b }, { a }];
|
||||||
|
[{ a, b }, { a }, { a }];
|
||||||
|
[{ a, b }, { a, b }];
|
||||||
|
[{ a, b }, { a, b, c }];
|
|
@ -88,7 +88,10 @@ var arr: Array<number> = [1, 2, "..."];
|
||||||
// array sugar
|
// array sugar
|
||||||
var array: number[] = [1, 2, "..."];
|
var array: number[] = [1, 2, "..."];
|
||||||
|
|
||||||
var matrix: number[][] = [[1, 2], [3, 4]];
|
var matrix: number[][] = [
|
||||||
|
[1, 2],
|
||||||
|
[3, 4]
|
||||||
|
];
|
||||||
var matrix_parens: number[][] = matrix;
|
var matrix_parens: number[][] = matrix;
|
||||||
|
|
||||||
var nullable_array: ?(number[]) = null;
|
var nullable_array: ?(number[]) = null;
|
||||||
|
@ -96,7 +99,10 @@ var nullable_array_parens: ?(number[]) = nullable_array;
|
||||||
|
|
||||||
var array_of_nullable: (?number)[] = [null, 3];
|
var array_of_nullable: (?number)[] = [null, 3];
|
||||||
|
|
||||||
var array_of_tuple: [number, string][] = [[0, "foo"], [1, "bar"]];
|
var array_of_tuple: [number, string][] = [
|
||||||
|
[0, "foo"],
|
||||||
|
[1, "bar"]
|
||||||
|
];
|
||||||
var array_of_tuple_parens: [number, string][] = array_of_tuple;
|
var array_of_tuple_parens: [number, string][] = array_of_tuple;
|
||||||
|
|
||||||
type ObjType = { "bar-foo": string, "foo-bar": number };
|
type ObjType = { "bar-foo": string, "foo-bar": number };
|
||||||
|
|
|
@ -108,7 +108,11 @@ function reduce_test() {
|
||||||
return a + b;
|
return a + b;
|
||||||
});
|
});
|
||||||
|
|
||||||
var flattened = [[0, 1], [2, 3], [4, 5]].reduce(function(a, b) {
|
var flattened = [
|
||||||
|
[0, 1],
|
||||||
|
[2, 3],
|
||||||
|
[4, 5]
|
||||||
|
].reduce(function(a, b) {
|
||||||
return a.concat(b);
|
return a.concat(b);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -481,6 +481,25 @@ describe.each\`a | b | expected
|
||||||
\${1} | \${2} | \${3}
|
\${1} | \${2} | \${3}
|
||||||
\${2} | \${1} | \${3}\`
|
\${2} | \${1} | \${3}\`
|
||||||
|
|
||||||
|
describe.each([1, 2, 3])("test", a => {
|
||||||
|
expect(a).toBe(a);
|
||||||
|
});
|
||||||
|
|
||||||
|
test.only.each([[1, 1, 2], [1, 2, 3], [2, 1, 3]])(
|
||||||
|
".add(%i, %i)", (a, b, expected) => {
|
||||||
|
expect(a + b).toBe(expected);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
test.each([
|
||||||
|
{ a: "1", b: 1 },
|
||||||
|
{ a: "2", b: 2 },
|
||||||
|
{ a: "3", b: 3 },
|
||||||
|
])("test", ({ a, b }) => {
|
||||||
|
expect(Number(a)).toBe(b);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
=====================================output=====================================
|
=====================================output=====================================
|
||||||
describe.each\`
|
describe.each\`
|
||||||
a | b | expected
|
a | b | expected
|
||||||
|
@ -533,6 +552,26 @@ describe.each\`
|
||||||
\${2} | \${1} | \${3}
|
\${2} | \${1} | \${3}
|
||||||
\`;
|
\`;
|
||||||
|
|
||||||
|
describe.each([1, 2, 3])("test", a => {
|
||||||
|
expect(a).toBe(a);
|
||||||
|
});
|
||||||
|
|
||||||
|
test.only.each([
|
||||||
|
[1, 1, 2],
|
||||||
|
[1, 2, 3],
|
||||||
|
[2, 1, 3]
|
||||||
|
])(".add(%i, %i)", (a, b, expected) => {
|
||||||
|
expect(a + b).toBe(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
test.each([
|
||||||
|
{ a: "1", b: 1 },
|
||||||
|
{ a: "2", b: 2 },
|
||||||
|
{ a: "3", b: 3 }
|
||||||
|
])("test", ({ a, b }) => {
|
||||||
|
expect(Number(a)).toBe(b);
|
||||||
|
});
|
||||||
|
|
||||||
================================================================================
|
================================================================================
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
@ -587,6 +626,25 @@ describe.each\`a | b | expected
|
||||||
\${1} | \${2} | \${3}
|
\${1} | \${2} | \${3}
|
||||||
\${2} | \${1} | \${3}\`
|
\${2} | \${1} | \${3}\`
|
||||||
|
|
||||||
|
describe.each([1, 2, 3])("test", a => {
|
||||||
|
expect(a).toBe(a);
|
||||||
|
});
|
||||||
|
|
||||||
|
test.only.each([[1, 1, 2], [1, 2, 3], [2, 1, 3]])(
|
||||||
|
".add(%i, %i)", (a, b, expected) => {
|
||||||
|
expect(a + b).toBe(expected);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
test.each([
|
||||||
|
{ a: "1", b: 1 },
|
||||||
|
{ a: "2", b: 2 },
|
||||||
|
{ a: "3", b: 3 },
|
||||||
|
])("test", ({ a, b }) => {
|
||||||
|
expect(Number(a)).toBe(b);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
=====================================output=====================================
|
=====================================output=====================================
|
||||||
describe.each\`
|
describe.each\`
|
||||||
a | b | expected
|
a | b | expected
|
||||||
|
@ -639,6 +697,26 @@ describe.each\`
|
||||||
\${2} | \${1} | \${3}
|
\${2} | \${1} | \${3}
|
||||||
\`;
|
\`;
|
||||||
|
|
||||||
|
describe.each([1, 2, 3])("test", (a) => {
|
||||||
|
expect(a).toBe(a);
|
||||||
|
});
|
||||||
|
|
||||||
|
test.only.each([
|
||||||
|
[1, 1, 2],
|
||||||
|
[1, 2, 3],
|
||||||
|
[2, 1, 3]
|
||||||
|
])(".add(%i, %i)", (a, b, expected) => {
|
||||||
|
expect(a + b).toBe(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
test.each([
|
||||||
|
{ a: "1", b: 1 },
|
||||||
|
{ a: "2", b: 2 },
|
||||||
|
{ a: "3", b: 3 }
|
||||||
|
])("test", ({ a, b }) => {
|
||||||
|
expect(Number(a)).toBe(b);
|
||||||
|
});
|
||||||
|
|
||||||
================================================================================
|
================================================================================
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
|
|
@ -41,3 +41,22 @@ describe.each`a | b | expected
|
||||||
${11111111111} | ${a().b().c().d()} | ${2}
|
${11111111111} | ${a().b().c().d()} | ${2}
|
||||||
${1} | ${2} | ${3}
|
${1} | ${2} | ${3}
|
||||||
${2} | ${1} | ${3}`
|
${2} | ${1} | ${3}`
|
||||||
|
|
||||||
|
describe.each([1, 2, 3])("test", a => {
|
||||||
|
expect(a).toBe(a);
|
||||||
|
});
|
||||||
|
|
||||||
|
test.only.each([[1, 1, 2], [1, 2, 3], [2, 1, 3]])(
|
||||||
|
".add(%i, %i)", (a, b, expected) => {
|
||||||
|
expect(a + b).toBe(expected);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
test.each([
|
||||||
|
{ a: "1", b: 1 },
|
||||||
|
{ a: "2", b: 2 },
|
||||||
|
{ a: "3", b: 3 },
|
||||||
|
])("test", ({ a, b }) => {
|
||||||
|
expect(Number(a)).toBe(b);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
Loading…
Reference in New Issue