From d6822aebcf88d4dae541191c5fb687f25a66adc2 Mon Sep 17 00:00:00 2001 From: Guilliam Xavier Date: Tue, 4 Feb 2020 17:21:51 +0100 Subject: [PATCH] Fix twig_compare float-string trailing whitespace + refactor --- src/Extension/CoreExtension.php | 6 ++++-- tests/Extension/CoreTest.php | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Extension/CoreExtension.php b/src/Extension/CoreExtension.php index bbb55596b64..00389589ab1 100644 --- a/src/Extension/CoreExtension.php +++ b/src/Extension/CoreExtension.php @@ -971,16 +971,18 @@ function twig_compare($a, $b) if (is_nan($a)) { return 1; } + $b = trim($b); if (!is_numeric($b)) { return (string) $a <=> $b; } - return (float) $a <=> $b; + return $a <=> (float) $b; } - if (\is_float($b) && \is_string($a)) { + if (\is_string($a) && \is_float($b)) { if (is_nan($b)) { return 1; } + $a = trim($a); if (!is_numeric($a)) { return $a <=> (string) $b; } diff --git a/tests/Extension/CoreTest.php b/tests/Extension/CoreTest.php index 61cf31c8168..91cced5b357 100644 --- a/tests/Extension/CoreTest.php +++ b/tests/Extension/CoreTest.php @@ -306,6 +306,12 @@ public function provideCompareCases() [-1, 42, 'abc42'], [-1, 0, 'abc42'], + [0, 42.0, ' 42.0'], + [0, 42.0, '42.0 '], + [-1, 42.0, '42.0abc'], + [-1, 42.0, 'abc42.0'], + [-1, 0.0, 'abc42.0'], + [0, INF, 'INF'], [0, -INF, '-INF'], [0, INF, '1e1000'],