Page MenuHomePhorge

D25117.1737345149.diff
No OneTemporary

D25117.1737345149.diff

diff --git a/src/utils/__tests__/PhutilUtilsTestCase.php b/src/utils/__tests__/PhutilUtilsTestCase.php
--- a/src/utils/__tests__/PhutilUtilsTestCase.php
+++ b/src/utils/__tests__/PhutilUtilsTestCase.php
@@ -1004,11 +1004,18 @@
$uri = new PhutilURI('http://example.org/');
+ // Each test is defined in this way:
+ // 0: subject $value
+ // 1: expected result from phutil_nonempty_string($value)
+ // 2: expected result from phutil_nonempty_stringlike($value)
+ // 3: expected result from phutil_nonempty_scalar($value)
+ // 4: human test name
$map = array(
array(null, false, false, false, 'literal null'),
array('', false, false, false, 'empty string'),
array('x', true, true, true, 'nonempty string'),
- array(false, null, null, null, 'bool'),
+ array(false, null, null, false, 'false bool'),
+ array(true, null, null, true, 'true bool'),
array(1, null, null, true, 'integer'),
array($uri, null, true, true, 'uri object'),
array(2.5, null, null, true, 'float'),
diff --git a/src/utils/utils.php b/src/utils/utils.php
--- a/src/utils/utils.php
+++ b/src/utils/utils.php
@@ -2187,6 +2187,9 @@
* string other than the empty string, integers, and floats are considered
* scalar.
*
+ * Note that booleans are also valid scalars, where false is considered empty,
+ * and true is non-empty since if you cast true to string, it's non-empty.
+ *
* This method raises an exception if passed any other value.
*
* @param Value to test.
@@ -2205,6 +2208,14 @@
return true;
}
+ // Booleans are also valid scalars by PHP. Inventing the opposite can be
+ // too much esoteric and problematic.
+ // false: empty, because casted to string becomes '' (empty)
+ // true: non-empty, because casted to string becomes '1' (non-empty)
+ if ($value === false || $value === true) {
+ return $value;
+ }
+
if (is_object($value)) {
try {
$string = phutil_string_cast($value);

File Metadata

Mime Type
text/plain
Expires
Mon, Jan 20, 03:52 (2 d, 1 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1135598
Default Alt Text
D25117.1737345149.diff (1 KB)

Event Timeline