40 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
namespace nur\sery\wip\app;
 | 
						|
 | 
						|
use nur\sery\A;
 | 
						|
use nur\sery\str;
 | 
						|
 | 
						|
class args {
 | 
						|
  /**
 | 
						|
   * transformer une liste d'argument de la forme
 | 
						|
   * - ["myArg" => $value]  devient  ["--my-arg", "$value"]
 | 
						|
   * - ["myOpt" => true]    devient  ["--my-opt"]
 | 
						|
   * - ["myOpt" => false]   est omis
 | 
						|
   * - les autres valeurs sont prises telles quelles
 | 
						|
   */
 | 
						|
  static function from_array(?array $array): array {
 | 
						|
    $args = [];
 | 
						|
    if ($array === null) return $args;
 | 
						|
    $index = 0;
 | 
						|
    foreach ($array as $arg => $value) {
 | 
						|
      if ($value === false) continue;
 | 
						|
      if ($arg === $index) {
 | 
						|
        $index++;
 | 
						|
      } else {
 | 
						|
        $arg = str::us2camel($arg);
 | 
						|
        $arg = str::camel2us($arg, false, "-");
 | 
						|
        $arg = str_replace("_", "-", $arg);
 | 
						|
        $args[] = "--$arg";
 | 
						|
        if (is_array($value)) $value[] = "--";
 | 
						|
        elseif ($value === true) $value = null;
 | 
						|
      }
 | 
						|
      if (is_array($value)) {
 | 
						|
        A::merge($args, array_map("strval", $value));
 | 
						|
      } elseif ($value !== null) {
 | 
						|
        $args[] = "$value";
 | 
						|
      }
 | 
						|
    }
 | 
						|
    return $args;
 | 
						|
  }
 | 
						|
}
 |