Check-in [e4e8e5030f]
Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Use array_shift for multiple positional - - - stdin/json placeholders. Don't populate $args from optional args. |
|---|---|
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
e4e8e5030f4675db5e3c59c2135ae5cf |
| User & Date: | mario 2014-12-12 20:10:35 |
Context
|
2014-12-13
| ||
| 17:36 | Retrieve count of backlinks to URL from various web services (Facebook, Google+, Twitter, Reddit, StumbleUpon, LinkedIn, Delicious, Pinterest) <em>Shallow merge of previous <code>php-scripts.fossil</code> repo.</em> check-in: c49ea11126 user: mario tags: trunk | |
|
2014-12-12
| ||
| 20:10 | Use array_shift for multiple positional - - - stdin/json placeholders. Don't populate $args from optional args. check-in: e4e8e5030f user: mario tags: trunk | |
| 19:41 | Reworked wrapper script to allow for piping and `-` placeholder parameters, and array functions be called (implicit JSON input/output). check-in: cb3d40f15b user: mario tags: trunk | |
Changes
Changes to php/pipefunc.php.
| ︙ | ︙ | |||
53 54 55 56 57 58 59 |
if (preg_match("/^ \s* [\[\{] .+ [\]\}] \s* $/smix", $stdin)) {
$stdin = json_decode($stdin, TRUE);
}
// Allot array values to multiple params
if (is_array($stdin) and ($dashes >= 2)) {
while (count($stdin)) {
| | < | > | < < | < | 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
if (preg_match("/^ \s* [\[\{] .+ [\]\}] \s* $/smix", $stdin)) {
$stdin = json_decode($stdin, TRUE);
}
// Allot array values to multiple params
if (is_array($stdin) and ($dashes >= 2)) {
while (count($stdin)) {
$args[array_search("-", $args, TRUE)] = array_shift($stdin);
}
}
// Substitute `-` args
elseif ($dashes == 1) {
$args[array_search("-", $args, TRUE)] = $stdin;
}
// Just use as first param
else {
$args = array_merge([$stdin], $args);
}
}
#print_r($args);
#-- Run target function, capture result value
list($fref, $i_result) = reflect_args($func, $args);
#$func =$fref;
$r = $fref->invokeArgs($args);
if (is_int($i_result) && is_scalar($r) && !is_string($r)) {
$r = $args[$i_result];
}
var_dump($func, $args, $r);
#-- Output result
if (in_array($func, str_getcsv("print_r,print,var_dump")) && !is_string($r)) {
// as errno
exit(intval($r));
}
else {
|
| ︙ | ︙ | |||
102 103 104 105 106 107 108 | $errname = array_search($errno, get_defined_constants()); global $func; fwrite(STDERR, "\x1b[31m$errname \x1b[0m(\x1b[32m$func\x1b[0m): \x1b[33m$errstr\x1b[0m\n"); } // Apply & references, if one of the function parameters expects one, keep that as result parameter index | | > | | | | | > | | 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
$errname = array_search($errno, get_defined_constants());
global $func;
fwrite(STDERR, "\x1b[31m$errname \x1b[0m(\x1b[32m$func\x1b[0m): \x1b[33m$errstr\x1b[0m\n");
}
// Apply & references, if one of the function parameters expects one, keep that as result parameter index
function reflect_args($func, & $args, $i_result=NULL) {
$fref = new ReflectionFunction($func);
foreach ($fref->getParameters() as $i => $param) {
if ($i < count($args)) {
$args[$i] = & $args[$i];
if ($param->isPassedByReference()) {
$i_result = $i;
}
}
}
return [$fref, $i_result];
}
?>
|