Replace some global variables with static class properties in Formatter

This commit is contained in:
Alex Cabal 2024-07-06 13:34:12 -05:00
parent 2d220ca008
commit b5933631c5

View file

@ -2,15 +2,32 @@
use function Safe\preg_replace; use function Safe\preg_replace;
class Formatter{ class Formatter{
private static Transliterator $_Transliterator;
private static Parsedown $_MarkdownParser;
/** /**
* Remove diacritics from a string. * Remove diacritics from a string, leaving the now-unaccented characters in place.
*/ */
public static function RemoveDiacritics(string $text): string{ public static function RemoveDiacritics(string $text): string{
if(!isset($GLOBALS['transliterator'])){ if(!isset(Formatter::$_Transliterator)){
$GLOBALS['transliterator'] = Transliterator::createFromRules(':: Any-Latin; :: Latin-ASCII; :: NFD; :: [:Nonspacing Mark:] Remove; :: Lower(); :: NFC;', Transliterator::FORWARD); $transliterator = Transliterator::createFromRules(':: Any-Latin; :: Latin-ASCII; :: NFD; :: [:Nonspacing Mark:] Remove; :: Lower(); :: NFC;', Transliterator::FORWARD);
if($transliterator === null){
return $text;
}
else{
Formatter::$_Transliterator = $transliterator;
}
} }
return $GLOBALS['transliterator']->transliterate($text); $transliteratedText = Formatter::$_Transliterator->transliterate($text);
if($transliteratedText === false){
return $text;
}
else{
return $transliteratedText;
}
} }
/** /**
@ -30,7 +47,7 @@ class Formatter{
*/ */
public static function MakeUrlSafe(string $text): string{ public static function MakeUrlSafe(string $text): string{
// Remove accent characters // Remove accent characters
$text = self::RemoveDiacritics($text); $text = Formatter::RemoveDiacritics($text);
// Remove apostrophes // Remove apostrophes
$text = preg_replace('/[\']/u', '', $text); $text = preg_replace('/[\']/u', '', $text);
@ -68,12 +85,12 @@ class Formatter{
* Convert a string of Markdown into HTML. * Convert a string of Markdown into HTML.
*/ */
public static function MarkdownToHtml(?string $text): string{ public static function MarkdownToHtml(?string $text): string{
if(!isset($GLOBALS['markdown-parser'])){ if(!isset(Formatter::$_MarkdownParser)){
$GLOBALS['markdown-parser'] = new Parsedown(); Formatter::$_MarkdownParser = new Parsedown();
$GLOBALS['markdown-parser']->setSafeMode(true); Formatter::$_MarkdownParser->setSafeMode(true);
} }
return $GLOBALS['markdown-parser']->text($text); return Formatter::$_MarkdownParser->text($text);
} }
/** /**