add support for multiple arguments and mutually exclusive params
[m6w6/travis-pecl] / gen-matrix.php
1 <?php
2
3 return function() {
4 $process = function($apc, $key, $values = ["no", "yes"]) {
5
6 return $apc;
7 };
8
9 foreach (func_get_args() as $array) {
10 $apc = [];
11 foreach ($array as $key => $values) {
12 if (is_numeric($key) && is_string($values)) {
13 // switch on yes/no
14 $key = $values;
15 $values = ["no", "yes"];
16 } else if (is_numeric($key) && is_array($values)) {
17 // mutually enasbled options
18 $vpc = [];
19 foreach ($values as $yes) {
20 $mpc = "$yes=yes ";
21 foreach ($values as $no) {
22 if ($yes === $no) {
23 continue;
24 }
25 $mpc .= "$no=no ";
26 }
27 $vpc[] = $mpc;
28 }
29 $key = null;
30 $values = $vpc;
31 }
32
33 if (empty($apc)) {
34 // seed
35 foreach ((array) $values as $val) {
36 $apc[] = strlen($key) ? "$key=$val" : $val;
37 }
38 } else {
39 // combine
40 $cpc = $apc;
41 $apc = [];
42 foreach ((array) $values as $val) {
43 foreach ($cpc as $e) {
44 $apc[] = strlen($key) ? "$e $key=$val" : "$e $val";
45 }
46 }
47 }
48 }
49 $xpc[] = $apc;
50 }
51 return $xpc;
52 };