Skip to content

Commit

Permalink
Never break imports (#527)
Browse files Browse the repository at this point in the history
  • Loading branch information
fvictorio committed Jun 5, 2021
1 parent fe4ec01 commit 9b17f6e
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 26 deletions.
42 changes: 28 additions & 14 deletions src/nodes/ImportDirective.js
Original file line number Diff line number Diff line change
@@ -1,30 +1,44 @@
const {
doc: {
builders: { group, line, softline }
builders: { join }
}
} = require('prettier/standalone');

const printSeparatedList = require('./print-separated-list');
const { printString } = require('../prettier-comments/common/util');

const ImportDirective = {
print: ({ node, options }) => {
let doc = printString(node.path, options);
const importPath = printString(node.path, options);

let doc;

if (node.unitAlias) {
doc = [doc, ' as ', node.unitAlias];
// import "./Foo.sol" as Foo;
doc = [importPath, ' as ', node.unitAlias];
} else if (node.symbolAliases) {
doc = [
'{',
printSeparatedList(
node.symbolAliases.map(([a, b]) => (b ? `${a} as ${b}` : a)),
{ firstSeparator: options.bracketSpacing ? line : softline }
),
'} from ',
doc
];
// import { Foo, Bar as Qux } from "./Foo.sol";
doc = ['{'];

if (options.bracketSpacing) {
doc.push(' ');
}

const symbolAliases = node.symbolAliases.map(([a, b]) =>
b ? `${a} as ${b}` : a
);
doc.push(join(', ', symbolAliases));

if (options.bracketSpacing) {
doc.push(' ');
}

doc.push('} from ', importPath);
} else {
// import "./Foo.sol";
doc = importPath;
}
return group(['import ', doc, ';']);

return ['import ', doc, ';'];
}
};

Expand Down
14 changes: 2 additions & 12 deletions tests/ImportDirective/__snapshots__/jsfmt.spec.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,7 @@ import "SomeFile.sol";
import "SomeFile.sol" as SomeOtherFile;
import "AnotherFile.sol" as SomeSymbol;
import { symbol1 as alias, symbol2 } from "File.sol";
import {
symbol1 as alias1,
symbol2 as alias2,
symbol3 as alias3,
symbol4
} from "File2.sol";
import { symbol1 as alias1, symbol2 as alias2, symbol3 as alias3, symbol4 } from "File2.sol";
================================================================================
`;
Expand All @@ -45,12 +40,7 @@ import "SomeFile.sol";
import "SomeFile.sol" as SomeOtherFile;
import "AnotherFile.sol" as SomeSymbol;
import {symbol1 as alias, symbol2} from "File.sol";
import {
symbol1 as alias1,
symbol2 as alias2,
symbol3 as alias3,
symbol4
} from "File2.sol";
import {symbol1 as alias1, symbol2 as alias2, symbol3 as alias3, symbol4} from "File2.sol";
================================================================================
`;

0 comments on commit 9b17f6e

Please sign in to comment.