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";
|
|
}
|
|
}
|