@rightcapital/php-parser
v1.4.9
Published
TypeScript types for PHP Parser JSON representation
Downloads
3,073
Readme
TypeScript types for PHP Parser JSON representation
Introduction
This NPM package is focusing on providing to following abilities:
- A TypeScript/JavaScript wrapper for calling nikic's PHP-Parser
- Sort of auto generated type definitions to annotate the AST (represented as JSON) from nikic's PHP-Parser cli
- Some util/helper functions to easily retrieving proper PHP AST node with correct type annotation
Installation
This package needs you have PHP with composer installed first
# pnpm
pnpm add @rightcapital/php-parser
# yarn
yarn add @rightcapital/php-parser
# npm
npm install --save @rightcapital/php-parser
Basic Usage
Supposed you have a PHP file named hello.php
with the following content
<?php
echo "Hello";
Here is your TypeScript code for parsing and retrieving the AST nodes of the above PHP file.
import {
CliHelpers,
FullyQualifiedScalarString,
FullyQualifiedStmtEcho,
NodeRetrieverHelpers,
NodeType,
NodeTypeInheritingFromNodeAbstract,
} from '@rightcapital/php-parser';
// Get the root AST nodes from PHP file
const rootNodes: NodeTypeInheritingFromNodeAbstract[] =
CliHelpers.parsePhpFileToAst('./hello.php');
// or if you prefer to get AST from code string, just use
// CliHelpers.parsePhpCodeStringToAst(`<?php echo "Hello";`)
console.log(rootNodes);
// [
// {
// nodeType: "Stmt_Echo",
// attributes: { startLine: 2, startFilePos: 6, endLine: 2, endTokenPos: 4, endFilePos: 18 },
// exprs: [[Object]],
// },
// ];
const echoNode =
NodeRetrieverHelpers.findNodeByNodeType<FullyQualifiedStmtEcho>(
rootNodes,
NodeType.Stmt_Echo,
);
// Get the specified node with type annotation
console.log(echoNode);
// {
// nodeType: 'Stmt_Echo',
// attributes: { startLine: 2, startFilePos: 6, endLine: 2, endTokenPos: 4, endFilePos: 18 },
// exprs: [
// { nodeType: 'Scalar_String', attributes: [Object], value: 'Hello' }
// ]
// }
const scalarStringNode =
NodeRetrieverHelpers.findNodeByNodeType<FullyQualifiedScalarString>(
echoNode!.exprs,
NodeType.Scalar_String,
);
console.log(scalarStringNode?.value);
// Hello
License
MIT License © 2023-Present