xref: /webtrees/app/Contracts/EncodingFactoryInterface.php (revision 1ff45046fabc22237b5d0d8e489c96f031fc598d)
11c6adce8SGreg Roach<?php
21c6adce8SGreg Roach
31c6adce8SGreg Roach/**
41c6adce8SGreg Roach * webtrees: online genealogy
5d11be702SGreg Roach * Copyright (C) 2023 webtrees development team
61c6adce8SGreg Roach * This program is free software: you can redistribute it and/or modify
71c6adce8SGreg Roach * it under the terms of the GNU General Public License as published by
81c6adce8SGreg Roach * the Free Software Foundation, either version 3 of the License, or
91c6adce8SGreg Roach * (at your option) any later version.
101c6adce8SGreg Roach * This program is distributed in the hope that it will be useful,
111c6adce8SGreg Roach * but WITHOUT ANY WARRANTY; without even the implied warranty of
121c6adce8SGreg Roach * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
131c6adce8SGreg Roach * GNU General Public License for more details.
141c6adce8SGreg Roach * You should have received a copy of the GNU General Public License
151c6adce8SGreg Roach * along with this program. If not, see <https://www.gnu.org/licenses/>.
161c6adce8SGreg Roach */
171c6adce8SGreg Roach
181c6adce8SGreg Roachdeclare(strict_types=1);
191c6adce8SGreg Roach
201c6adce8SGreg Roachnamespace Fisharebest\Webtrees\Contracts;
211c6adce8SGreg Roach
221c6adce8SGreg Roachuse Fisharebest\Webtrees\Encodings\EncodingInterface;
231c6adce8SGreg Roach
241c6adce8SGreg Roach/**
251c6adce8SGreg Roach * Create an encoding object.
261c6adce8SGreg Roach */
271c6adce8SGreg Roachinterface EncodingFactoryInterface
281c6adce8SGreg Roach{
291c6adce8SGreg Roach    /**
301c6adce8SGreg Roach     * Detect an encoding from a GEDCOM header record.
311c6adce8SGreg Roach     */
32*1ff45046SGreg Roach    public function detect(string $header): EncodingInterface|null;
331c6adce8SGreg Roach
341c6adce8SGreg Roach    /**
351c6adce8SGreg Roach     * Create a named encoding.
361c6adce8SGreg Roach     *
371c6adce8SGreg Roach     * @param string $name
381c6adce8SGreg Roach     *
391c6adce8SGreg Roach     * @return EncodingInterface
401c6adce8SGreg Roach     */
411c6adce8SGreg Roach    public function make(string $name): EncodingInterface;
421c6adce8SGreg Roach
431c6adce8SGreg Roach    /**
441c6adce8SGreg Roach     * A list of supported encodings and their names.
451c6adce8SGreg Roach     *
461c6adce8SGreg Roach     * @return array<string,string>
471c6adce8SGreg Roach     */
481c6adce8SGreg Roach    public function list(): array;
491c6adce8SGreg Roach}
50