annotate vendor/grasmash/expander/README.md @ 5:12f9dff5fda9 tip

Update to Drupal core 8.7.1
author Chris Cannam
date Thu, 09 May 2019 15:34:47 +0100
parents c75dbcec494b
children
rev   line source
Chris@0 1 [![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)
Chris@0 2 [![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)
Chris@0 3
Chris@0 4 This tool expands property references in PHP arrays. For example implementation, see Yaml Expander.
Chris@0 5
Chris@0 6 ### Installation
Chris@0 7
Chris@0 8 composer require grasmash/expander
Chris@0 9
Chris@0 10 ### Example usage:
Chris@0 11
Chris@0 12 Property references use dot notation to indicate array keys, and must be wrapped in `${}`.
Chris@0 13
Chris@0 14 Expansion logic:
Chris@0 15
Chris@0 16 ```php
Chris@0 17 <?php
Chris@0 18
Chris@0 19 $array = [
Chris@0 20 'type' => 'book',
Chris@0 21 'book' => [
Chris@0 22 'title' => 'Dune',
Chris@0 23 'author' => 'Frank Herbert',
Chris@0 24 'copyright' => '${book.author} 1965',
Chris@0 25 'protaganist' => '${characters.0.name}',
Chris@0 26 'media' => [
Chris@0 27 0 => 'hardcover',
Chris@0 28 1 => 'paperback',
Chris@0 29 ],
Chris@0 30 'nested-reference' => '${book.sequel}',
Chris@0 31 ],
Chris@0 32 'characters' => [
Chris@0 33 0 => [
Chris@0 34 'name' => 'Paul Atreides',
Chris@0 35 'occupation' => 'Kwisatz Haderach',
Chris@0 36 'aliases' => [
Chris@0 37 0 => 'Usul',
Chris@0 38 1 => 'Muad\'Dib',
Chris@0 39 2 => 'The Preacher',
Chris@0 40 ],
Chris@0 41 ],
Chris@0 42 1 => [
Chris@0 43 'name' => 'Duncan Idaho',
Chris@0 44 'occupation' => 'Swordmaster',
Chris@0 45 ],
Chris@0 46 ],
Chris@0 47 'summary' => '${book.title} by ${book.author}',
Chris@0 48 'publisher' => '${not.real.property}',
Chris@0 49 'sequels' => '${book.sequel}, and others.',
Chris@0 50 'available-products' => '${book.media.1}, ${book.media.0}',
Chris@0 51 'product-name' => '${${type}.title}',
Chris@0 52 'boolean-value' => true,
Chris@0 53 'null-value' => NULL,
Chris@0 54 'inline-array' => [
Chris@0 55 0 => 'one',
Chris@0 56 1 => 'two',
Chris@0 57 2 => 'three',
Chris@0 58 ],
Chris@0 59 'expand-array' => '${inline-array}',
Chris@0 60 'env-test' => '${env.test}',
Chris@0 61 ];
Chris@0 62
Chris@0 63 $expander = new Expander();
Chris@0 64 // Optionally set a logger.
Chris@0 65 $expander->setLogger(new Psr\Log\NullLogger());
Chris@0 66 // Optionally set a Stringfier, used to convert array placeholders into strings. Defaults to using implode() with `,` delimeter.
Chris@0 67 // @see StringifierInterface.
Chris@0 68 $expander->setStringifier(new Grasmash\Expander\Stringifier());
Chris@0 69
Chris@0 70 // Parse an array, expanding internal property references.
Chris@0 71 $expanded = $expander->expandArrayProperties($array);
Chris@0 72
Chris@0 73 // Parse an array, expanding references using both internal and supplementary values.
Chris@0 74 $reference_properties = 'book' => ['sequel' => 'Dune Messiah'];
Chris@0 75 // Set an environmental variable.
Chris@0 76 putenv("test=gomjabbar");
Chris@0 77 $expanded = $expander->expandArrayProperties($array, $reference_properties);
Chris@0 78
Chris@0 79 print_r($expanded);
Chris@0 80 ````
Chris@0 81
Chris@0 82 Resultant array:
Chris@0 83
Chris@0 84 ```php
Chris@0 85 Array
Chris@0 86 (
Chris@0 87 [type] => book
Chris@0 88 [book] => Array
Chris@0 89 (
Chris@0 90 [title] => Dune
Chris@0 91 [author] => Frank Herbert
Chris@0 92 [copyright] => Frank Herbert 1965
Chris@0 93 [protaganist] => Paul Atreides
Chris@0 94 [media] => Array
Chris@0 95 (
Chris@0 96 [0] => hardcover
Chris@0 97 [1] => paperback
Chris@0 98 )
Chris@0 99
Chris@0 100 [nested-reference] => Dune Messiah
Chris@0 101 )
Chris@0 102
Chris@0 103 [characters] => Array
Chris@0 104 (
Chris@0 105 [0] => Array
Chris@0 106 (
Chris@0 107 [name] => Paul Atreides
Chris@0 108 [occupation] => Kwisatz Haderach
Chris@0 109 [aliases] => Array
Chris@0 110 (
Chris@0 111 [0] => Usul
Chris@0 112 [1] => Muad'Dib
Chris@0 113 [2] => The Preacher
Chris@0 114 )
Chris@0 115
Chris@0 116 )
Chris@0 117
Chris@0 118 [1] => Array
Chris@0 119 (
Chris@0 120 [name] => Duncan Idaho
Chris@0 121 [occupation] => Swordmaster
Chris@0 122 )
Chris@0 123
Chris@0 124 )
Chris@0 125
Chris@0 126 [summary] => Dune by Frank Herbert
Chris@0 127 [publisher] => ${not.real.property}
Chris@0 128 [sequels] => Dune Messiah, and others.
Chris@0 129 [available-products] => paperback, hardcover
Chris@0 130 [product-name] => Dune
Chris@0 131 [boolean-value] => 1
Chris@0 132 [null-value] =>
Chris@0 133 [inline-array] => Array
Chris@0 134 (
Chris@0 135 [0] => one
Chris@0 136 [1] => two
Chris@0 137 [2] => three
Chris@0 138 )
Chris@0 139
Chris@0 140 [expand-array] => one,two,three
Chris@0 141 [env-test] => gomjabbar
Chris@0 142 [env] => Array
Chris@0 143 (
Chris@0 144 [test] => gomjabbar
Chris@0 145 )
Chris@0 146
Chris@0 147 )
Chris@0 148
Chris@0 149 ```