UNPKG

prettier-plugin-solidity

Version:

A Prettier Plugin for automatically formatting your Solidity code.

35 lines 1.52 kB
import { NonterminalKind } from '@nomicfoundation/slang/cst'; import { doc } from 'prettier'; import { createKindCheckFunction } from '../slang-utils/create-kind-check-function.js'; import { isBinaryOperation } from '../slang-utils/is-binary-operation.js'; import { createBinaryOperationPrinter } from './create-binary-operation-printer.js'; const { group, indent } = doc.builders; const isStatementWithoutIndentedOperation = createKindCheckFunction([ NonterminalKind.ReturnStatement, NonterminalKind.IfStatement, NonterminalKind.WhileStatement ]); const comparisonIndentRulesBuilder = (path) => (document) => { let node = path.getNode(); for (let i = 2;; i += 2) { const grandparentNode = path.getNode(i); if (grandparentNode.kind === NonterminalKind.ExpressionStatement) { if (path.getNode(i + 1).kind === NonterminalKind.ForStatementCondition) break; else return indent(document); } if (isStatementWithoutIndentedOperation(grandparentNode)) break; if (!isBinaryOperation(grandparentNode)) return indent(document); if (node === grandparentNode.rightOperand.variant) break; node = grandparentNode; } return document; }; export const printComparisonOperation = createBinaryOperationPrinter(() => (document) => group(document), // always group comparisonIndentRulesBuilder); //# sourceMappingURL=print-comparison-operation.js.map