UNPKG

prettier-plugin-solidity

Version:

A Prettier Plugin for automatically formatting your Solidity code.

28 lines (24 loc) 924 B
// https://prettier.io/docs/en/plugins.html#parsers import { SourceUnit as SlangSourceUnit } from '@nomicfoundation/slang/ast'; import { clearOffsets } from './slang-utils/metadata.js'; import { createParser } from './slang-utils/create-parser.js'; import { SourceUnit } from './slang-nodes/SourceUnit.js'; import type { ParserOptions } from 'prettier'; import type { AstNode } from './slang-nodes/types.d.ts'; export default function parse( text: string, options: ParserOptions<AstNode> ): AstNode { const [parser, parseOutput] = createParser(text, options); if (parseOutput.isValid()) { // We update the compiler version by the inferred one. options.compiler = parser.languageVersion; const parsed = new SourceUnit( new SlangSourceUnit(parseOutput.tree.asNonterminalNode()), options ); clearOffsets(); return parsed; } throw new Error(parseOutput.errors()[0].message); }