Skip to content

A JavaScript based code generator, to unparse glayzzle/php-parser compatible AST back to code.

Notifications You must be signed in to change notification settings

Sevavietl/php-unparser

 
 

Repository files navigation

php-unparser

Build Status Coverage Status

This project is a JavaScript based unparser for the AST produced by glayzzle's php-parser.

It aims to produce code that uses the style format recommended by PSR-1 and PSR-2.

It's at an early development stage, but it is already able to generate code for most of the produced AST.

It has no dependencies.

How to use

var unparse = require('php-unparser');

var options = {
  indent: true,
  dontUseWhitespaces: false,
  shortArray: true,
  bracketsNewLine: true,
  forceNamespaceBrackets: false,
  collapseEmptyLines: true
};

var ast = {
  "kind": "program",
  "children": [
    {
      "kind": "echo",
      "arguments": [
        {
          "kind": "string",
          "value": "hello world",
          "isDoubleQuote": true
        }
      ]
    }
  ],
  "errors": []
};

// Will output -> echo "hello world";
console.log(unparse(ast, options));

Options

option value default description
indent string The indentation size, default is four white spaces.
dontUseWhitespaces boolean false If enabled removes all the whitespaces between stuff.
shortArray boolean false If enabled write arrays in short array syntax enabled since PHP 5.4.0
bracketsNewLine boolean true If enabled will put brackets on new line.
forceNamespaceBrackets boolean false Force the namespace bracketed syntax (recommended for combining namespaces)
collapseEmptyLines boolean true If enabled it will remove all empty lines between sections and properties.

Demo

See it working

License

MIT License, Copyright 2016 Christopher Luna

About

A JavaScript based code generator, to unparse glayzzle/php-parser compatible AST back to code.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 91.1%
  • PHP 7.4%
  • Makefile 1.5%