nur-sery/nur_src/ldap/schemas/LseSyntax.php

53 lines
1.3 KiB
PHP

<?php
namespace nur\ldap\schemas;
use nur\sery\output\log;
class LseSyntax extends LseParser {
const BOOL_ATTRS = [
"x_not_human_readable",
"x_binary_transfer_required",
];
protected $data;
protected function reset(): array {
return $this->data = [
"oid" => null,
"desc" => null,
"x_not_human_readable" => null,
"x_binary_transfer_required" => null,
];
}
function parse(?string $s=null): array {
if ($s !== null) $this->s = $s;
$data =$this->reset();
$this->skipLiteral('(');
$data["oid"] = self::fix_oid($this->parseName());
while ($this->isName()) {
$okey = $this->parseName();
$key = str_replace("-", "_", strtolower($okey));
switch ($key) {
case "desc":
$data[$key] = $this->parseString();
break;
case "x_not_human_readable":
case "x_binary_transfer_required":
$data[$key] = boolval($this->parseString());
break;
default:
log::warning("unknown key $okey in $s");
$data["unknown_keys"][] = $okey;
break;
}
}
$this->skipLiteral(')');
# puis mettre à jour les valeurs booléennes
foreach (self::BOOL_ATTRS as $name) {
$data[$name] = boolval($data[$name]);
}
return $this->data = $data;
}
}