From de10d919633b772cff3138975c7f0b6cec84430f Mon Sep 17 00:00:00 2001 From: epriestley Date: Fri, 13 Sep 2013 11:48:11 -0700 Subject: [PATCH] Make normalization of "#yolo" hashtags less aggressive Summary: Fixes T3825. See that task for details. Test Plan: Verified that `#\herp` no longer matches project `#herp`, but `#herp` still works fine. Reviewers: btrahan Reviewed By: btrahan CC: aran Maniphest Tasks: T3825 Differential Revision: https://secure.phabricator.com/D6970 --- .../project/remarkup/ProjectRemarkupRule.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/applications/project/remarkup/ProjectRemarkupRule.php b/src/applications/project/remarkup/ProjectRemarkupRule.php index 02800ab1a8..9acd489dd6 100644 --- a/src/applications/project/remarkup/ProjectRemarkupRule.php +++ b/src/applications/project/remarkup/ProjectRemarkupRule.php @@ -25,7 +25,7 @@ final class ProjectRemarkupRule $map = array(); foreach ($ids as $key => $slug) { - $map[PhabricatorSlug::normalize($slug)][] = $slug; + $map[$this->normalizeSlug($slug)][] = $slug; } $projects = id(new PhabricatorProjectQuery()) @@ -47,4 +47,14 @@ final class ProjectRemarkupRule return $result; } + private function normalizeSlug($slug) { + // NOTE: We're using phutil_utf8_strtolower() (and not PhabricatorSlug's + // normalize() method) because this normalization should be only somewhat + // liberal. We want "#YOLO" to match against "#yolo", but "#\\yo!!lo" + // should not. normalize() strips out most punctuation and leads to + // excessively aggressive matches. + + return phutil_utf8_strtolower($slug).'/'; + } + }