few things that seem unclear to me:
-why applying a regex on a documented parameter, if ($1 = +o) seems well enough for me...?
-why make 4 blocks of code for every parameter whilst the only difference is either the \'+\' or the \'-\' OR the \'v\' or the \'o\'. All can be combined to 1 block of code with 2 simple $iif