UNPKG

prettier-plugin-solidity

Version:

A Prettier Plugin for automatically formatting your Solidity code.

26 lines 1.28 kB
import { NonterminalKind } from '@nomicfoundation/slang/cst'; import { doc } from 'prettier'; import { isBinaryOperation } from '../slang-utils/is-binary-operation.js'; import { createBinaryOperationPrinter } from './create-binary-operation-printer.js'; import { binaryGroupRulesBuilder, shouldNotIndent } from './print-binary-operation.js'; const { indent } = doc.builders; const logicalGroupRulesBuilder = binaryGroupRulesBuilder(() => false); const logicalIndentRulesBuilder = (path, options) => (document) => { for (let i = 2, node = path.node;; i += 2) { const grandparentNode = path.getNode(i); if (shouldNotIndent(grandparentNode, path, i)) break; if (options.experimentalTernaries && grandparentNode.kind === NonterminalKind.ConditionalExpression && grandparentNode.operand.variant === node) break; if (!isBinaryOperation(grandparentNode)) return indent(document); if (node === grandparentNode.rightOperand.variant) break; node = grandparentNode; } return document; }; export const printLogicalOperation = createBinaryOperationPrinter(logicalGroupRulesBuilder, logicalIndentRulesBuilder); //# sourceMappingURL=print-logical-operation.js.map