' tags. * * @param string $value * @param string $phrase * * @return string */ public static function highlight(string $value, string $phrase): string { helper('text'); return highlight_phrase($value, $phrase); } //-------------------------------------------------------------------- /** * Highlights code samples with HTML/CSS. * * @param $value * * @return string */ public static function highlight_code($value): string { helper('text'); return highlight_code($value); } //-------------------------------------------------------------------- /** * Limits the number of characters to $limit, and trails of with an ellipsis. * Will break at word break so may be more or less than $limit. * * @param $value * @param integer $limit * * @return string */ public static function limit_chars($value, int $limit = 500): string { helper('text'); return character_limiter($value, $limit); } //-------------------------------------------------------------------- /** * Limits the number of words to $limit, and trails of with an ellipsis. * * @param $value * @param integer $limit * * @return string */ public static function limit_words($value, int $limit = 100): string { helper('text'); return word_limiter($value, $limit); } //-------------------------------------------------------------------- /** * Returns the $value displayed in a localized manner. * * @param $value * @param integer $precision * @param string $type * @param string|null $locale * * @return string */ public static function local_number($value, string $type = 'decimal', int $precision = 4, string $locale = null): string { helper('number'); $types = [ 'decimal' => NumberFormatter::DECIMAL, 'currency' => NumberFormatter::CURRENCY, 'percent' => NumberFormatter::PERCENT, 'scientific' => NumberFormatter::SCIENTIFIC, 'spellout' => NumberFormatter::SPELLOUT, 'ordinal' => NumberFormatter::ORDINAL, 'duration' => NumberFormatter::DURATION, ]; return format_number($value, $precision, $locale, ['type' => $types[$type]]); } //-------------------------------------------------------------------- /** * Returns the $value displayed as a currency string. * * @param $value * @param string $currency * @param string|null $locale * * @return string */ public static function local_currency($value, string $currency, string $locale = null): string { helper('number'); $options = [ 'type' => NumberFormatter::CURRENCY, 'currency' => $currency, ]; return format_number($value, 2, $locale, $options); } /** * Returns a string with all instances of newline character (\n) * converted to an HTML
tag. * * @param string $value * * @return string */ public static function nl2br(string $value): string { $typography = Services::typography(); return $typography->nl2brExceptPre($value); } //-------------------------------------------------------------------- /** * Takes a body of text and uses the auto_typography() method to * turn it into prettier, easier-to-read, prose. * * @param string $value * * @return string */ public static function prose(string $value): string { $typography = Services::typography(); return $typography->autoTypography($value); } //-------------------------------------------------------------------- /** * Rounds a given $value in one of 3 ways; * * - common Normal rounding * - ceil always rounds up * - floor always rounds down * * @param string $value * @param mixed $precision * @param string $type * * @return string */ public static function round(string $value, $precision = 2, string $type = 'common'): string { if (! is_numeric($precision)) { $type = $precision; $precision = 2; } switch ($type) { case 'common': return round($value, $precision); break; case 'ceil': return ceil($value); break; case 'floor': return floor($value); break; } // Still here, just return the value. return $value; } //-------------------------------------------------------------------- /** * Returns a "title case" version of the string. * * @param string $value * * @return string */ public static function title(string $value): string { return ucwords(strtolower($value)); } //-------------------------------------------------------------------- }