+ $req = array_filter($optional, function($a) {
+ return $a[3] & Args::REQARG;
+ });
+ $opt = array_filter($optional, function($a) {
+ return $a[3] & Args::OPTARG;
+ });
+
+ $dump = "";
+ if ($req) {
+ $short = array_filter($req, function($a) {
+ return is_string($a[0]);
+ });
+ if ($short) {
+ $dump .= sprintf(" [-%s <arg>]", implode("|-", array_column($short, 0)));
+ }
+ $long = array_filter($req, function($a) {
+ return !is_string($a[0]);
+ });
+ if ($long) {
+ $dump .= sprintf(" [--%s <arg>]", implode("|--", array_column($long, 1)));
+ }
+ }
+ if ($opt) {
+ $short = array_filter($opt, function($a) {
+ return is_string($a[0]);
+ });
+ if ($short) {
+ $dump .= sprintf(" [-%s [<arg>]]", implode("|-", array_column($short, 0)));
+ }
+ $long = array_filter($opt, function($a) {
+ return !is_string($a[0]);
+ });
+ if ($long) {
+ $dump .= sprintf(" [--%s [<arg>]]", implode("|--", array_column($long, 1)));
+ }
+ }
+ return $dump;