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 @@ -454,6 +454,7 @@ 'DiffusionCommitQuery' => 'applications/diffusion/query/DiffusionCommitQuery.php', 'DiffusionCommitRef' => 'applications/diffusion/data/DiffusionCommitRef.php', 'DiffusionCommitRemarkupRule' => 'applications/diffusion/remarkup/DiffusionCommitRemarkupRule.php', + 'DiffusionCommitRemarkupRuleTestCase' => 'applications/diffusion/remarkup/__tests__/DiffusionCommitRemarkupRuleTestCase.php', 'DiffusionCommitTagsController' => 'applications/diffusion/controller/DiffusionCommitTagsController.php', 'DiffusionConduitAPIMethod' => 'applications/diffusion/conduit/DiffusionConduitAPIMethod.php', 'DiffusionController' => 'applications/diffusion/controller/DiffusionController.php', @@ -3458,6 +3459,7 @@ 'DiffusionCommitQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', 'DiffusionCommitRef' => 'Phobject', 'DiffusionCommitRemarkupRule' => 'PhabricatorObjectRemarkupRule', + 'DiffusionCommitRemarkupRuleTestCase' => 'PhabricatorTestCase', 'DiffusionCommitTagsController' => 'DiffusionController', 'DiffusionConduitAPIMethod' => 'ConduitAPIMethod', 'DiffusionController' => 'PhabricatorController', diff --git a/src/applications/diffusion/remarkup/__tests__/DiffusionCommitRemarkupRuleTestCase.php b/src/applications/diffusion/remarkup/__tests__/DiffusionCommitRemarkupRuleTestCase.php new file mode 100644 --- /dev/null +++ b/src/applications/diffusion/remarkup/__tests__/DiffusionCommitRemarkupRuleTestCase.php @@ -0,0 +1,60 @@ + array( + 'embed' => array( + array( + 'offset' => 1, + 'id' => 'rP12f3f6d3a9ef9c7731051815846810cb3c4cd248', + ), + ), + 'ref' => array( + array( + 'offset' => 1, + 'id' => 'rP12f3f6d3a9ef9c7731051815846810cb3c4cd248', + ), + ), + ), + '{rP1234, key=value}' => array( + 'embed' => array( + array( + 'offset' => 1, + 'id' => 'rP1234', + 'tail' => ', key=value', + ), + ), + 'ref' => array( + array( + 'offset' => 1, + 'id' => 'rP1234', + ), + ), + ), + '{rP1234 key=value}' => array( + 'embed' => array( + array( + 'offset' => 1, + 'id' => 'rP1234', + 'tail' => ' key=value', + ), + ), + 'ref' => array( + array( + 'offset' => 1, + 'id' => 'rP1234', + ), + ), + ), + ); + + foreach ($cases as $input => $expect) { + $rule = new DiffusionCommitRemarkupRule(); + $matches = $rule->extractReferences($input); + $this->assertEqual($expect, $matches, $input); + } + } + +} diff --git a/src/infrastructure/markup/rule/PhabricatorObjectRemarkupRule.php b/src/infrastructure/markup/rule/PhabricatorObjectRemarkupRule.php --- a/src/infrastructure/markup/rule/PhabricatorObjectRemarkupRule.php +++ b/src/infrastructure/markup/rule/PhabricatorObjectRemarkupRule.php @@ -166,7 +166,7 @@ $prefix = preg_quote($prefix); $id = $this->getObjectIDPattern(); - return '(\B{'.$prefix.'('.$id.')((?:[^}\\\\]|\\\\.)*)}\B)u'; + return '(\B{'.$prefix.'('.$id.')([,\s](?:[^}\\\\]|\\\\.)*)?}\B)u'; } private function getObjectReferencePattern() {