UNPKG

prettier-plugin-solidity

Version:

A Prettier Plugin for automatically formatting your Solidity code.

43 lines 1.96 kB
import { NonterminalKind, TerminalKind } from '@nomicfoundation/slang/cst'; import { isBinaryOperation } from './is-binary-operation.js'; import { Expression } from '../slang-nodes/Expression.js'; import { TupleExpression } from '../slang-nodes/TupleExpression.js'; import { TupleValues } from '../slang-nodes/TupleValues.js'; import { TupleValue } from '../slang-nodes/TupleValue.js'; export function createHugFunction(huggableOperators) { const operators = new Set(huggableOperators); return (node) => { const variant = node.variant; if (variant.kind !== TerminalKind.Identifier && isBinaryOperation(variant) && operators.has(variant.operator)) { const loc = node.loc; return Object.assign(Object.create(Expression.prototype), { kind: NonterminalKind.Expression, loc: Object.assign({}, loc), comments: [], variant: Object.assign(Object.create(TupleExpression.prototype), { kind: NonterminalKind.TupleExpression, loc: Object.assign({}, loc), comments: [], items: Object.assign(Object.create(TupleValues.prototype), { kind: NonterminalKind.TupleValues, loc: Object.assign({}, loc), comments: [], items: [ Object.assign(Object.create(TupleValue.prototype), { kind: NonterminalKind.TupleValue, loc: Object.assign({}, loc), comments: [], expression: node }) ], separators: [] }) }) }); } return node; }; } //# sourceMappingURL=create-hug-function.js.map