diff --git a/CHANGELOG.md b/CHANGELOG.md index f48af8866..c89c769ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ * Added `Grav\Framework\Object` classes for creating collections of objects * Added `Grav\Framework\Page` interfaces * Deprecated GravTrait + * Added `|nicenumber` Twig filter 1. [](#improved) * Make it possible to include debug bar also into non-HTML responses diff --git a/system/src/Grav/Common/Twig/TwigExtension.php b/system/src/Grav/Common/Twig/TwigExtension.php index 908b5fdac..a00329cd8 100644 --- a/system/src/Grav/Common/Twig/TwigExtension.php +++ b/system/src/Grav/Common/Twig/TwigExtension.php @@ -66,6 +66,7 @@ class TwigExtension extends \Twig_Extension new \Twig_SimpleFilter('*ize', [$this, 'inflectorFilter']), new \Twig_SimpleFilter('absolute_url', [$this, 'absoluteUrlFilter']), new \Twig_SimpleFilter('contains', [$this, 'containsFilter']), + new \Twig_SimpleFilter('nicenumber', [$this, 'niceNumberFunc']), new \Twig_SimpleFilter('defined', [$this, 'definedDefaultFilter']), new \Twig_SimpleFilter('ends_with', [$this, 'endsWithFilter']), new \Twig_SimpleFilter('fieldName', [$this, 'fieldNameFilter']), @@ -1048,4 +1049,28 @@ class TwigExtension extends \Twig_Extension { return pathinfo($var); } + + /** + * Returns a nicer more readable number + * + * @param $number + * @return bool|string + */ + public function niceNumberFunc($n) + { + + // first strip any formatting; + $n = (0+str_replace(",", "", $n)); + + // is this a number? + if (!is_numeric($n)) return false; + + // now filter it; + if ($n > 1000000000000) return round(($n/1000000000000), 2).' t'; + elseif ($n > 1000000000) return round(($n/1000000000), 2).' b'; + elseif ($n > 1000000) return round(($n/1000000), 2).' m'; + elseif ($n > 1000) return round(($n/1000), 2).' k'; + + return number_format($n); + } }