X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=vendor%2Fgrasmash%2Fexpander%2FREADME.md;fp=vendor%2Fgrasmash%2Fexpander%2FREADME.md;h=8bfbaac6e7807c8054cb06922ce40ea9e21a3861;hb=af6d1fb995500ae68849458ee10d66abbdcfb252;hp=0000000000000000000000000000000000000000;hpb=680c79a86e3ed402f263faeac92e89fb6d9edcc0;p=yaffs-website diff --git a/vendor/grasmash/expander/README.md b/vendor/grasmash/expander/README.md new file mode 100644 index 000000000..8bfbaac6e --- /dev/null +++ b/vendor/grasmash/expander/README.md @@ -0,0 +1,149 @@ +[![Build Status](https://travis-ci.org/grasmash/expander.svg?branch=master)](https://travis-ci.org/grasmash/expander) [![Packagist](https://img.shields.io/packagist/v/grasmash/expander.svg)](https://packagist.org/packages/grasmash/expander) +[![Total Downloads](https://poser.pugx.org/grasmash/expander/downloads)](https://packagist.org/packages/grasmash/expander) [![Coverage Status](https://coveralls.io/repos/github/grasmash/expander/badge.svg?branch=master)](https://coveralls.io/github/grasmash/expander?branch=master) + +This tool expands property references in PHP arrays. For example implementation, see Yaml Expander. + +### Installation + + composer require grasmash/expander + +### Example usage: + +Property references use dot notation to indicate array keys, and must be wrapped in `${}`. + +Expansion logic: + +```php + 'book', + 'book' => [ + 'title' => 'Dune', + 'author' => 'Frank Herbert', + 'copyright' => '${book.author} 1965', + 'protaganist' => '${characters.0.name}', + 'media' => [ + 0 => 'hardcover', + 1 => 'paperback', + ], + 'nested-reference' => '${book.sequel}', + ], + 'characters' => [ + 0 => [ + 'name' => 'Paul Atreides', + 'occupation' => 'Kwisatz Haderach', + 'aliases' => [ + 0 => 'Usul', + 1 => 'Muad\'Dib', + 2 => 'The Preacher', + ], + ], + 1 => [ + 'name' => 'Duncan Idaho', + 'occupation' => 'Swordmaster', + ], + ], + 'summary' => '${book.title} by ${book.author}', + 'publisher' => '${not.real.property}', + 'sequels' => '${book.sequel}, and others.', + 'available-products' => '${book.media.1}, ${book.media.0}', + 'product-name' => '${${type}.title}', + 'boolean-value' => true, + 'null-value' => NULL, + 'inline-array' => [ + 0 => 'one', + 1 => 'two', + 2 => 'three', + ], + 'expand-array' => '${inline-array}', + 'env-test' => '${env.test}', +]; + +$expander = new Expander(); +// Optionally set a logger. +$expander->setLogger(new Psr\Log\NullLogger()); +// Optionally set a Stringfier, used to convert array placeholders into strings. Defaults to using implode() with `,` delimeter. +// @see StringifierInterface. +$expander->setStringifier(new Grasmash\Expander\Stringifier()); + +// Parse an array, expanding internal property references. +$expanded = $expander->expandArrayProperties($array); + +// Parse an array, expanding references using both internal and supplementary values. +$reference_properties = 'book' => ['sequel' => 'Dune Messiah']; +// Set an environmental variable. +putenv("test=gomjabbar"); +$expanded = $expander->expandArrayProperties($array, $reference_properties); + +print_r($expanded); +```` + +Resultant array: + +```php +Array +( + [type] => book + [book] => Array + ( + [title] => Dune + [author] => Frank Herbert + [copyright] => Frank Herbert 1965 + [protaganist] => Paul Atreides + [media] => Array + ( + [0] => hardcover + [1] => paperback + ) + + [nested-reference] => Dune Messiah + ) + + [characters] => Array + ( + [0] => Array + ( + [name] => Paul Atreides + [occupation] => Kwisatz Haderach + [aliases] => Array + ( + [0] => Usul + [1] => Muad'Dib + [2] => The Preacher + ) + + ) + + [1] => Array + ( + [name] => Duncan Idaho + [occupation] => Swordmaster + ) + + ) + + [summary] => Dune by Frank Herbert + [publisher] => ${not.real.property} + [sequels] => Dune Messiah, and others. + [available-products] => paperback, hardcover + [product-name] => Dune + [boolean-value] => 1 + [null-value] => + [inline-array] => Array + ( + [0] => one + [1] => two + [2] => three + ) + + [expand-array] => one,two,three + [env-test] => gomjabbar + [env] => Array + ( + [test] => gomjabbar + ) + +) + +```