Skip to content

Commit

Permalink
feature: @putout/printer: ArrayExpression: CallExpression, ObjectExpr…
Browse files Browse the repository at this point in the history
…ession
  • Loading branch information
coderaiser committed Apr 23, 2024
1 parent a72daed commit 4551754
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 2 deletions.
20 changes: 18 additions & 2 deletions lib/tokenize/expressions/array-expression/array-expression.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,23 @@ const isObjectAfterSpread = (a) => isSpreadElement(a) && isNextObject(a) && !isP
const isObjectAfterIdentifier = (a) => isIdentifier(a) && isNextObject(a) && !isPrevObject(a);
const isObjectAfterSimple = (a) => isObjectAfterSpread(a) || isObjectAfterIdentifier(a);

const isSpreadBeforeObject = (a) => {
if (!a.isObjectExpression())
return false;

const prev = a.getPrevSibling();

if (!prev.isSpreadElement())
return false;

if (prev.getPrevSibling().isObjectExpression())
return false;

return prev
.get('argument')
.isCallExpression();
};

const isNextSimple = (a) => {
const next = a.getNextSibling();

Expand Down Expand Up @@ -116,14 +133,13 @@ module.exports.ArrayExpression = {
if (index < n || trailingComma)
maybe.print(is, ',');

maybe.print.newline(is && !isNextObject(element));
maybe.print.newline((is || isSpreadBeforeObject(element)) && !isNextObject(element));
maybe.print.space(is && isObjectAfterSimple(element));

if (!is && index < n) {
print(',');

if (isNextSimpleBetweenObjects(element) || !(element.isObjectExpression() && isNextSimple(element)))
//if (!(element.isObjectExpression() && isNextSimple(element)))
print.space();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,11 @@ test('printer: tokenizer: array-object-identifier', (t) => {
t.end();
});

test('printer: tokenizer: array-call-object', (t) => {
t.print(fixture.arrayCallObject);
t.end();
});

test('printer: tokenizer: array-tuple', (t) => {
t.print(fixture.arrayTuple);
t.end();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export default [
...safeAlign,
...matchToFlat(match), {
ignores: ['**/fixture'],
}
];

0 comments on commit 4551754

Please sign in to comment.