38 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace nur;
 | |
| 
 | |
| use nur\b\io\IOException;
 | |
| use nur\b\io\IReader;
 | |
| use nur\b\ValueException;
 | |
| use Symfony\Component\Yaml\Exception\ParseException;
 | |
| use Symfony\Component\Yaml\Yaml as SymfonyYaml;
 | |
| 
 | |
| /**
 | |
|  * Class yaml: lecture de données yaml
 | |
|  */
 | |
| class yaml {
 | |
|   /**
 | |
|    * @throws ValueException si $input n'est pas un string ni une instance de
 | |
|    * {@link IReader}
 | |
|    * @throws IOException si une erreur de lecture s'est produite
 | |
|    */
 | |
|   static final function load($input): array {
 | |
|     $contents = reader::get_contents($input);
 | |
|     try {
 | |
|       return A::with(SymfonyYaml::parse($contents));
 | |
|     } catch (ParseException $e) {
 | |
|       $message = "parse error";
 | |
|       if (is_string($input)) $message .= " while loading $input";
 | |
|       throw new IOException($message, 0, $e);
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   static final function with($data, int $indent=2, int $flags=0): string {
 | |
|     return SymfonyYaml::dump($data, PHP_INT_MAX, $indent, $flags);
 | |
|   }
 | |
| 
 | |
|   static final function dump($data, $output=null, int $indent=2, int $flags=0): void {
 | |
|     writer::with($output)->write(self::with($data, $indent, $flags))->close();
 | |
|   }
 | |
| }
 |