public function drawParam($name, $description, $values = '')
{
$paramw = round($this->columns / 3);
echo "\n";
$leftcolumn = [];
$valstr = is_array($values) ? implode('|', array_keys($values)) : $values;
if ('' !== $valstr) {
$valstr = '=[' . $valstr . ']';
}
$paramstr = " [1m--" . $name . $valstr . "[0m";
$pl = mb_orig_strlen($paramstr);
if ($pl + 2 >= $paramw) {
$paramw = $pl + 3;
}
$descw = $this->columns - $paramw;
$leftcolumn[] = $paramstr;
if (is_array($values)) {
foreach ($values as $key => $value) {
$leftcolumn[] = ' ' . $key . ' - ' . $value;
}
}
if (strlen($description) <= $descw) {
$rightcolumn[] = $description;
} else {
$m = explode(' ', $description);
$descstr = '';
while (sizeof($m) > 0) {
$el = array_shift($m);
if (strlen($descstr) + mb_orig_strlen($el) >= $descw) {
$rightcolumn[] = $descstr;
$descstr = '';
} else {
$descstr .= ' ';
}
$descstr .= $el;
}
if ('' !== $descstr) {
$rightcolumn[] = $descstr;
}
}
while (sizeof($leftcolumn) > 0 || sizeof($rightcolumn) > 0) {
if ($l = array_shift($leftcolumn)) {
echo str_pad($l, $paramw, ' ');
} else {
echo str_repeat(' ', $paramw - 7);
}
if ($r = array_shift($rightcolumn)) {
echo $r;
}
echo "\n";
}
}