X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Fpsy%2Fpsysh%2Fsrc%2FCommand%2FListCommand%2FConstantEnumerator.php;fp=vendor%2Fpsy%2Fpsysh%2Fsrc%2FCommand%2FListCommand%2FConstantEnumerator.php;h=e17d42a07836fc0fc068d28c5e3b8bad7989f3a0;hp=0000000000000000000000000000000000000000;hb=af6d1fb995500ae68849458ee10d66abbdcfb252;hpb=680c79a86e3ed402f263faeac92e89fb6d9edcc0 diff --git a/vendor/psy/psysh/src/Command/ListCommand/ConstantEnumerator.php b/vendor/psy/psysh/src/Command/ListCommand/ConstantEnumerator.php new file mode 100644 index 000000000..e17d42a07 --- /dev/null +++ b/vendor/psy/psysh/src/Command/ListCommand/ConstantEnumerator.php @@ -0,0 +1,122 @@ +getOption('constants')) { + return; + } + + $user = $input->getOption('user'); + $internal = $input->getOption('internal'); + $category = $input->getOption('category'); + + $ret = []; + + if ($user) { + $ret['User Constants'] = $this->getConstants('user'); + } + + if ($internal) { + $ret['Interal Constants'] = $this->getConstants('internal'); + } + + if ($category) { + $label = ucfirst($category) . ' Constants'; + $ret[$label] = $this->getConstants($category); + } + + if (!$user && !$internal && !$category) { + $ret['Constants'] = $this->getConstants(); + } + + return array_map([$this, 'prepareConstants'], array_filter($ret)); + } + + /** + * Get defined constants. + * + * Optionally restrict constants to a given category, e.g. "date". If the + * category is "internal", include all non-user-defined constants. + * + * @param string $category + * + * @return array + */ + protected function getConstants($category = null) + { + if (!$category) { + return get_defined_constants(); + } + + $consts = get_defined_constants(true); + + if ($category === 'internal') { + unset($consts['user']); + + return call_user_func_array('array_merge', $consts); + } + + return isset($consts[$category]) ? $consts[$category] : []; + } + + /** + * Prepare formatted constant array. + * + * @param array $constants + * + * @return array + */ + protected function prepareConstants(array $constants) + { + // My kingdom for a generator. + $ret = []; + + $names = array_keys($constants); + natcasesort($names); + + foreach ($names as $name) { + if ($this->showItem($name)) { + $ret[$name] = [ + 'name' => $name, + 'style' => self::IS_CONSTANT, + 'value' => $this->presentRef($constants[$name]), + ]; + } + } + + return $ret; + } +}