1.1.1 • Published 6 years ago

php-serialized-ast v1.1.1

Weekly downloads
1
License
MIT
Repository
github
Last release
6 years ago

php-serialized-ast v1.1.1

Mimics the unserialize function in PHP, but returns AST nodes instead.

Any syntax errors are returned in an array. The parser will continue until the end is reached or a fatal error is encountered. This means multiple errors can be returned.

When 1+ errors are encountered, the returned array will only contain error nodes. Use results[0].type !== 'error' to know if there are no errors.

const {parse} = require('php-serialized-ast');

parse('a:0:{}'); => [{ type: 'array', value: [], start: 0, end: 6 }]

parse('a:0:{'); => [{ type: 'error', error: 'Array never closed', start: 0 }]

Passing true to parse will cause it to return raw values instead of AST nodes. Array nodes are not converted in any way.

parse('a:1:{i:0;N;}', true); => [ [0, null] ]

Passing a function to parse will transform every parsed array.

parse('a:1:{i:0;N;}', onArray); => [ [null] ]

function onArray(arr) {
  let res = [];
  for (let i = 0; i < arr.length; i += 2) {
    res[arr[i]] = arr[i + 1];
  }
  return res;
}

Note: Serialized class instances are not currently supported. Pull requests are encouraged!

 

reduce(ast: Array<Node> | Node)

Convert AST nodes to their raw values using the reduce function.

Array nodes are not converted in any way.

const {reduce, parse} = require('php-serialized-ast');

reduce(parse('a:1:{i:0;N;}')); => [ [0, null] ]

Note: Doing reduce(parse(str)) will always be slower doing parse(str, true) because of the intermediate AST nodes.

1.1.1

6 years ago

1.1.0

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago