misuzu/src/Parsers/Parsers.php

21 lines
683 B
PHP

<?php
namespace Misuzu\Parsers;
final class Parsers {
/** @var array<int, ParserInterface> */
private static array $instances = [];
public static function instance(TextFormat|string $format): ParserInterface {
if(is_string($format))
$format = TextFormat::from($format);
if(!array_key_exists($format->value, self::$instances))
self::$instances[$format->value] = match($format) {
TextFormat::Plain => new PlainParser,
TextFormat::BBCode => new BBCode\BBCodeParser,
TextFormat::Markdown => new MarkdownParser,
};
return self::$instances[$format->value];
}
}