. */ declare(strict_types=1); namespace Fisharebest\Webtrees\Contracts; use Fisharebest\Webtrees\Tree; /** * A GEDCOM element is a tag/primitive in a GEDCOM file. */ interface ElementInterface { /** * Convert a value to a canonical form. * * @param string $value * * @return string */ public function canonical(string $value): string; /** * Should we collapse the children of this element when editing? * * @return bool */ public function collapseChildren(): bool; /** * Create a default value for this element. * * @param Tree $tree * * @return string */ public function default(Tree $tree): string; /** * An edit control for this data. * * @param string $id * @param string $name * @param string $value * @param Tree $tree * * @return string */ public function edit(string $id, string $name, string $value, Tree $tree): string; /** * Escape @ signs in a GEDCOM export. * * @param string $value * * @return string */ public function escape(string $value): string; /** * Name for this GEDCOM primitive. * * @return string */ public function label(): string; /** * Create a label/value pair for this element. * * @param string $value * @param Tree $tree * * @return string */ public function labelValue(string $value, Tree $tree): string; /** * Set, remove or replace a subtag. * * @param string $subtag * @param string $repeat * @param string $before * * @return void */ public function subtag(string $subtag, string $repeat, string $before = ''): void; /** * @return array */ public function subtags(): array; /** * Display the value of this type of element. * * @param string $value * @param Tree $tree * * @return string */ public function value(string $value, Tree $tree): string; /** * A list of controlled values for this element * * @return array */ public function values(): array; }