solidity-docgen
Version:
Documentation generator for Solidity smart contracts.
28 lines (23 loc) • 960 B
text/typescript
import { ContractDefinition, ImportDirective, PragmaDirective, SourceUnit, UsingForDirective } from "solidity-ast";
import { Node, NodeType, NodeTypeMap } from "solidity-ast/node";
import { AssertEqual } from "./utils/assert-equal-types";
export type DocItem = Exclude<
SourceUnit['nodes'][number] | ContractDefinition['nodes'][number],
ImportDirective | PragmaDirective | UsingForDirective
>;
export const docItemTypes = [
'ContractDefinition',
'EnumDefinition',
'ErrorDefinition',
'EventDefinition',
'FunctionDefinition',
'ModifierDefinition',
'StructDefinition',
'UserDefinedValueTypeDefinition',
'VariableDeclaration',
] as const;
// Make sure at compile time that docItemTypes contains exactly the node types of DocItem.
const _: AssertEqual<typeof docItemTypes[number], DocItem['nodeType']> = true;
export function isDocItem(node: Node): node is DocItem {
return (docItemTypes as readonly string[]).includes(node.nodeType);
}