<?php
namespace nulib\schema\types;

use nulib\str;

abstract class _tstring extends _tsimple {
  /** @var bool faut-il trimmer la valeur */
  const TRIM = false;
  /** @var bool faut-il normaliser les caractères fin de ligne */
  const NORM_NL = false;

  static function get_params_from_definition(?array $definition): ?array {
    $params = null;
    $trim = $definition["trim"] ?? null;
    if ($trim !== null) $params["trim"] = $trim;
    $normNl = $definition["norm_nl"] ?? null;
    if ($normNl !== null) $params["norm_nl"] = $normNl;
    return $params;
  }

  function extract(string $value): string {
    if ($this->params["trim"] ?? static::TRIM) $value = trim($value);
    if ($this->params["norm_nl"] ?? static::NORM_NL) $value = str::norm_nl($value);
    return $value;
  }
}
