UNPKG

prettier-plugin-solidity

Version:

A Prettier Plugin for automatically formatting your Solidity code.

40 lines 1.97 kB
import { NonterminalKind } from '@nomicfoundation/slang/cst'; import { doc } from 'prettier'; import { printSeparatedList } from '../slang-printers/print-separated-list.js'; import { printIndentedGroupOrSpacedDocument } from '../slang-printers/print-indented-group-or-spaced-document.js'; import { extractVariant } from '../slang-utils/extract-variant.js'; import { SlangNode } from './SlangNode.js'; import { ForStatementInitialization } from './ForStatementInitialization.js'; import { ForStatementCondition } from './ForStatementCondition.js'; import { Expression } from './Expression.js'; import { Statement } from './Statement.js'; const { line } = doc.builders; export class ForStatement extends SlangNode { constructor(ast, options) { super(ast); this.kind = NonterminalKind.ForStatement; this.initialization = extractVariant(new ForStatementInitialization(ast.initialization, options)); this.condition = extractVariant(new ForStatementCondition(ast.condition, options)); if (ast.iterator) { this.iterator = extractVariant(new Expression(ast.iterator, options)); } this.body = extractVariant(new Statement(ast.body, options)); this.updateMetadata(this.initialization, this.condition, this.iterator, this.body); } print(path, print) { const initialization = path.call(print, 'initialization'); const condition = path.call(print, 'condition'); const iterator = path.call(print, 'iterator'); return [ 'for (', printSeparatedList([initialization, condition, iterator], { separator: initialization !== ';' || condition !== ';' || iterator !== '' ? line : '' }), ')', printIndentedGroupOrSpacedDocument(path.call(print, 'body'), this.body.kind !== NonterminalKind.Block) ]; } } //# sourceMappingURL=ForStatement.js.map