21 lines
683 B
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];
|
|
}
|
|
}
|