UNPKG

prettier-plugin-solidity

Version:

A Prettier Plugin for automatically formatting your Solidity code.

27 lines 1.21 kB
import { NonterminalKind } from '@nomicfoundation/slang/cst'; import { doc, util } from 'prettier'; import { locEnd } from '../slang-utils/loc.js'; const { hardline } = doc.builders; export function printPreservingEmptyLines(path, print, options) { return path.map((childPath) => { const node = childPath.getNode(); return [ // Only attempt to prepend an empty line if `node` is not the first item !childPath.isFirst && // YulLabel adds a dedented line so we don't have to prepend a hardline. (node.kind !== NonterminalKind.YulStatement || node.variant.kind !== NonterminalKind.YulLabel) ? hardline : '', print(childPath), // Only attempt to append an empty line if `node` is not the last item !childPath.isLast && // Append an empty line if the original text already had an one after the // current `node` util.isNextLineEmpty(options.originalText, locEnd(node)) ? hardline : '' ]; }, 'items'); } //# sourceMappingURL=print-preserving-empty-lines.js.map