Skip to content

Commit 26a9df2

Browse files
committed
move indented preserved empty lines logic into it's own function
1 parent 708700f commit 26a9df2

6 files changed

Lines changed: 25 additions & 55 deletions

File tree

src/slang-nodes/ContractMembers.ts

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
2-
import { doc } from 'prettier';
3-
import { printSeparatedItem } from '../slang-printers/print-separated-item.js';
4-
import { printPreservingEmptyLines } from '../slang-printers/print-preserving-empty-lines.js';
2+
import { printIndentedPreservingEmptyLines } from '../slang-printers/print-preserving-empty-lines.js';
53
import { extractVariant } from '../slang-utils/extract-variant.js';
64
import { SlangNode } from './SlangNode.js';
75
import { ContractMember } from './ContractMember.js';
@@ -11,8 +9,6 @@ import type { AstPath, Doc, ParserOptions } from 'prettier';
119
import type { CollectedMetadata, PrintFunction } from '../types.d.ts';
1210
import type { PrintableNode } from './types.d.ts';
1311

14-
const { hardline } = doc.builders;
15-
1612
export class ContractMembers extends SlangNode {
1713
readonly kind = NonterminalKind.ContractMembers;
1814

@@ -35,11 +31,6 @@ export class ContractMembers extends SlangNode {
3531
path: AstPath<ContractMembers>,
3632
options: ParserOptions<PrintableNode>
3733
): Doc {
38-
return this.items.length > 0 || (this.comments?.length || 0) > 0
39-
? printSeparatedItem(
40-
printPreservingEmptyLines(this, path, print, options),
41-
{ firstSeparator: hardline }
42-
)
43-
: '';
34+
return printIndentedPreservingEmptyLines(this, path, print, options);
4435
}
4536
}

src/slang-nodes/InterfaceMembers.ts

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
2-
import { doc } from 'prettier';
3-
import { printSeparatedItem } from '../slang-printers/print-separated-item.js';
4-
import { printPreservingEmptyLines } from '../slang-printers/print-preserving-empty-lines.js';
2+
import { printIndentedPreservingEmptyLines } from '../slang-printers/print-preserving-empty-lines.js';
53
import { extractVariant } from '../slang-utils/extract-variant.js';
64
import { SlangNode } from './SlangNode.js';
75
import { ContractMember } from './ContractMember.js';
@@ -11,8 +9,6 @@ import type { AstPath, Doc, ParserOptions } from 'prettier';
119
import type { CollectedMetadata, PrintFunction } from '../types.d.ts';
1210
import type { PrintableNode } from './types.d.ts';
1311

14-
const { hardline } = doc.builders;
15-
1612
export class InterfaceMembers extends SlangNode {
1713
readonly kind = NonterminalKind.InterfaceMembers;
1814

@@ -35,11 +31,6 @@ export class InterfaceMembers extends SlangNode {
3531
path: AstPath<InterfaceMembers>,
3632
options: ParserOptions<PrintableNode>
3733
): Doc {
38-
return this.items.length > 0 || (this.comments?.length || 0) > 0
39-
? printSeparatedItem(
40-
printPreservingEmptyLines(this, path, print, options),
41-
{ firstSeparator: hardline }
42-
)
43-
: '';
34+
return printIndentedPreservingEmptyLines(this, path, print, options);
4435
}
4536
}

src/slang-nodes/LibraryMembers.ts

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
2-
import { doc } from 'prettier';
3-
import { printSeparatedItem } from '../slang-printers/print-separated-item.js';
4-
import { printPreservingEmptyLines } from '../slang-printers/print-preserving-empty-lines.js';
2+
import { printIndentedPreservingEmptyLines } from '../slang-printers/print-preserving-empty-lines.js';
53
import { extractVariant } from '../slang-utils/extract-variant.js';
64
import { SlangNode } from './SlangNode.js';
75
import { ContractMember } from './ContractMember.js';
@@ -11,8 +9,6 @@ import type { AstPath, Doc, ParserOptions } from 'prettier';
119
import type { CollectedMetadata, PrintFunction } from '../types.d.ts';
1210
import type { PrintableNode } from './types.d.ts';
1311

14-
const { hardline } = doc.builders;
15-
1612
export class LibraryMembers extends SlangNode {
1713
readonly kind = NonterminalKind.LibraryMembers;
1814

@@ -35,11 +31,6 @@ export class LibraryMembers extends SlangNode {
3531
path: AstPath<LibraryMembers>,
3632
options: ParserOptions<PrintableNode>
3733
): Doc {
38-
return this.items.length > 0 || (this.comments?.length || 0) > 0
39-
? printSeparatedItem(
40-
printPreservingEmptyLines(this, path, print, options),
41-
{ firstSeparator: hardline }
42-
)
43-
: '';
34+
return printIndentedPreservingEmptyLines(this, path, print, options);
4435
}
4536
}

src/slang-nodes/Statements.ts

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
2-
import { doc } from 'prettier';
3-
import { printSeparatedItem } from '../slang-printers/print-separated-item.js';
4-
import { printPreservingEmptyLines } from '../slang-printers/print-preserving-empty-lines.js';
2+
import { printIndentedPreservingEmptyLines } from '../slang-printers/print-preserving-empty-lines.js';
53
import { extractVariant } from '../slang-utils/extract-variant.js';
64
import { SlangNode } from './SlangNode.js';
75
import { Statement } from './Statement.js';
@@ -11,8 +9,6 @@ import type { AstPath, Doc, ParserOptions } from 'prettier';
119
import type { CollectedMetadata, PrintFunction } from '../types.d.ts';
1210
import type { PrintableNode } from './types.d.ts';
1311

14-
const { hardline } = doc.builders;
15-
1612
export class Statements extends SlangNode {
1713
readonly kind = NonterminalKind.Statements;
1814

@@ -35,11 +31,6 @@ export class Statements extends SlangNode {
3531
path: AstPath<Statements>,
3632
options: ParserOptions<PrintableNode>
3733
): Doc {
38-
return this.items.length > 0 || (this.comments?.length || 0) > 0
39-
? printSeparatedItem(
40-
printPreservingEmptyLines(this, path, print, options),
41-
{ firstSeparator: hardline }
42-
)
43-
: '';
34+
return printIndentedPreservingEmptyLines(this, path, print, options);
4435
}
4536
}

src/slang-nodes/YulStatements.ts

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
2-
import { doc } from 'prettier';
3-
import { printSeparatedItem } from '../slang-printers/print-separated-item.js';
4-
import { printPreservingEmptyLines } from '../slang-printers/print-preserving-empty-lines.js';
2+
import { printIndentedPreservingEmptyLines } from '../slang-printers/print-preserving-empty-lines.js';
53
import { extractVariant } from '../slang-utils/extract-variant.js';
64
import { SlangNode } from './SlangNode.js';
75
import { YulStatement } from './YulStatement.js';
@@ -11,8 +9,6 @@ import type { AstPath, Doc, ParserOptions } from 'prettier';
119
import type { CollectedMetadata, PrintFunction } from '../types.d.ts';
1210
import type { PrintableNode } from './types.d.ts';
1311

14-
const { hardline } = doc.builders;
15-
1612
export class YulStatements extends SlangNode {
1713
readonly kind = NonterminalKind.YulStatements;
1814

@@ -35,11 +31,6 @@ export class YulStatements extends SlangNode {
3531
path: AstPath<YulStatements>,
3632
options: ParserOptions<PrintableNode>
3733
): Doc {
38-
return this.items.length > 0 || (this.comments?.length || 0) > 0
39-
? printSeparatedItem(
40-
printPreservingEmptyLines(this, path, print, options),
41-
{ firstSeparator: hardline }
42-
)
43-
: '';
34+
return printIndentedPreservingEmptyLines(this, path, print, options);
4435
}
4536
}

src/slang-printers/print-preserving-empty-lines.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst';
22
import { doc, util } from 'prettier';
33
import { locEnd } from '../slang-utils/loc.js';
44
import { printComments } from './print-comments.js';
5+
import { printSeparatedItem } from './print-separated-item.js';
56

67
import type { AstPath, Doc, ParserOptions } from 'prettier';
78
import type { LineCollection, PrintableNode } from '../slang-nodes/types.d.ts';
@@ -36,3 +37,17 @@ export function printPreservingEmptyLines(
3637
}, 'items')
3738
: printComments(node, path, options);
3839
}
40+
41+
export function printIndentedPreservingEmptyLines(
42+
node: LineCollection,
43+
path: AstPath<LineCollection>,
44+
print: PrintFunction,
45+
options: ParserOptions<PrintableNode>
46+
): Doc {
47+
return node.items.length > 0 || (node.comments?.length || 0) > 0
48+
? printSeparatedItem(
49+
printPreservingEmptyLines(node, path, print, options),
50+
{ firstSeparator: hardline }
51+
)
52+
: '';
53+
}

0 commit comments

Comments
 (0)