diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -849,6 +849,7 @@ 'PhutilRawEnglishLocale' => 'internationalization/locales/PhutilRawEnglishLocale.php', 'PhutilReadableSerializer' => 'readableserializer/PhutilReadableSerializer.php', 'PhutilReadableSerializerTestCase' => 'readableserializer/__tests__/PhutilReadableSerializerTestCase.php', + 'PhutilRegexException' => 'exception/PhutilRegexException.php', 'PhutilRope' => 'utils/PhutilRope.php', 'PhutilRopeTestCase' => 'utils/__tests__/PhutilRopeTestCase.php', 'PhutilServiceProfiler' => 'serviceprofiler/PhutilServiceProfiler.php', @@ -1009,6 +1010,9 @@ 'phutil_partition' => 'utils/utils.php', 'phutil_passthru' => 'future/exec/execx.php', 'phutil_person' => 'internationalization/pht.php', + 'phutil_preg_match' => 'utils/utils.php', + 'phutil_preg_match_all' => 'utils/utils.php', + 'phutil_raise_preg_exception' => 'utils/utils.php', 'phutil_register_library' => 'init/lib/core.php', 'phutil_register_library_map' => 'init/lib/core.php', 'phutil_set_system_locale' => 'utils/utf8.php', @@ -1925,6 +1929,7 @@ 'PhutilRawEnglishLocale' => 'PhutilLocale', 'PhutilReadableSerializer' => 'Phobject', 'PhutilReadableSerializerTestCase' => 'PhutilTestCase', + 'PhutilRegexException' => 'Exception', 'PhutilRope' => 'Phobject', 'PhutilRopeTestCase' => 'PhutilTestCase', 'PhutilServiceProfiler' => 'Phobject', diff --git a/src/exception/PhutilRegexException.php b/src/exception/PhutilRegexException.php new file mode 100644 --- /dev/null +++ b/src/exception/PhutilRegexException.php @@ -0,0 +1,3 @@ +getErrorsAsString(); + + $trap->destroy(); + + $pattern = $argv[0]; + $pattern_display = sprintf( + '"%s"', + addcslashes($pattern, '\\\"')); + + $message = array(); + $message[] = pht( + 'Call to %s(%s, ...) failed.', + $function, + $pattern_display); + + if (strlen($error_message)) { + $message[] = pht( + 'Regular expression engine emitted message: %s', + $error_message); + } + + $message = implode("\n\n", $message); + + throw new PhutilRegexException($message); +}