113 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace nur\v;
 | |
| 
 | |
| use nur\A;
 | |
| 
 | |
| /**
 | |
|  * Class js: des outils pour générer des valeurs pour javascript
 | |
|  */
 | |
| class js {
 | |
|   /** Quoter une partie de valeur chaine pour javascript. */
 | |
|   static function q($value): string {
 | |
|     $value = strval($value);
 | |
|     $value = preg_replace("/\"/", "\\\\\"", $value);
 | |
|     $value = preg_replace("/\n/", "\\\\n", $value);
 | |
|     return $value;
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Quoter une valeur chaine pour javascript avec des double-quotes.
 | |
|    *
 | |
|    * @param bool $qa la valeur doit-elle être utilisée dans un attribut HTML?
 | |
|    */
 | |
|   static function qv($value, bool $qa=false): string {
 | |
|     $value = strval($value);
 | |
|     $value = preg_replace("/\"/", "\\\\\"", $value);
 | |
|     $value = preg_replace("/\n/", "\\\\n", $value);
 | |
|     $value = "\"$value\"";
 | |
|     if ($qa) $value = htmlspecialchars($value);
 | |
|     return $value;
 | |
|   }
 | |
| 
 | |
|   /** méthode de convenance pour quoter un id "#id" */
 | |
|   static function qid(string $id): string {
 | |
|     return self::qv("#$id");
 | |
|   }
 | |
| 
 | |
|   /** méthode de convenance pour quoter une classe ".class" */
 | |
|   static function qclass(string $class): string {
 | |
|     return self::qv(".$class");
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Quoter une valeur scalaire ou tableau pour javascript avec des double-quotes.
 | |
|    *
 | |
|    * @param bool $qa la valeur doit-elle être utilisée dans un attribut HTML?
 | |
|    */
 | |
|   static function qvs($values, bool $qa=false): string {
 | |
|     if (A::is_array($values)) {
 | |
|       $values = A::with($values);
 | |
|       $jvalues = [];
 | |
|       foreach($values as $value) {
 | |
|         $jvalues[] = self::qv($value, $qa);
 | |
|       }
 | |
|       return "[".implode(", ", $jvalues)."]";
 | |
|     } else {
 | |
|       return self::qv($values, $qa);
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Quoter une valeur chaine pour javascript avec des quotes simples "'".
 | |
|    *
 | |
|    * @param bool $qa la valeur doit-elle être utilisée dans un attribut HTML?
 | |
|    */
 | |
|   static function sqv($value, bool $qa=false): string {
 | |
|     $value = strval($value);
 | |
|     $value = preg_replace("/\"/", "\\\\\"", $value);
 | |
|     $value = preg_replace("/\n/", "\\\\n", $value);
 | |
|     $value = "'$value'";
 | |
|     if ($qa) $value = htmlspecialchars($value);
 | |
|     return $value;
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Quoter une valeur scalaire ou tableau pour javascript avec des quotes simples "'".
 | |
|    *
 | |
|    * @param bool $qa la valeur doit-elle être utilisée dans un attribut HTML?
 | |
|    */
 | |
|   static function sqvs($values, bool $qa=false): string {
 | |
|     if (A::is_array($values)) {
 | |
|       $values = A::with($values);
 | |
|       $jvalues = [];
 | |
|       foreach($values as $value) {
 | |
|         $jvalues[] = self::sqv($value, $qa);
 | |
|       }
 | |
|       return "[".implode(", ", $jvalues)."]";
 | |
|     } else {
 | |
|       return self::sqv($values, $qa);
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   /** sérialiser une valeur objet */
 | |
|   static function qo($values): string {
 | |
|     $parts = [];
 | |
|     if ($values !== null) {
 | |
|       $first = true;
 | |
|       foreach ($values as $key => $value) {
 | |
|         if ($first) $first = false;
 | |
|         else $parts[] = ",";
 | |
|         $parts[] = self::qv($key);
 | |
|         $parts[] = ":";
 | |
|         $parts[] = json_encode($value, JSON_THROW_ON_ERROR);
 | |
|       }
 | |
|     }
 | |
|     return "{".implode("", $parts)."}";
 | |
|   }
 | |
| 
 | |
|   /** sérialiser une valeur booléenne */
 | |
|   static function qb($value): string {
 | |
|     return $value? "true": "false";
 | |
|   }
 | |
| }
 |