prettier-plugin-solidity
Version:
A Prettier Plugin for automatically formatting your Solidity code.
24 lines • 1.15 kB
JavaScript
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 = (node, path) => (document) => {
for (let i = 1, current = node, parent;; i++, current = parent) {
parent = path.getNode(i);
if (shouldNotIndent(parent, path, i))
break;
if (parent.kind === NonterminalKind.ConditionalExpression &&
parent.operand === current)
break;
if (!isBinaryOperation(parent))
return indent(document);
if (current === parent.rightOperand)
break;
}
return document;
};
export const printLogicalOperation = createBinaryOperationPrinter(logicalGroupRulesBuilder, logicalIndentRulesBuilder);
//# sourceMappingURL=print-logical-operation.js.map