Matching version-like expressions as milestone_names instead of milestone_iids

The changes also account for %2.1. being matched as milestone_name = "2.1" without
the word-separating dot.
This commit is contained in:
Alejandro Rodríguez 2016-04-05 21:35:43 -03:00
parent 4cab66e3e2
commit 0ba116a58e

View file

@ -79,14 +79,19 @@ class Milestone < ActiveRecord::Base
end
def self.reference_pattern
# NOTE: The iid pattern only matches when all characters on the expression
# are digits, so it will match %2 but not %2.1 because that's probably a
# milestone name and we want it to be matched as such.
%r{
(#{Project.reference_pattern})?
#{Regexp.escape(reference_prefix)}
(?:
(?<milestone_iid>\d+) | # Integer-based milestone iid, or
(?<milestone_iid>
\d+(?!\S\w)\b # Integer-based milestone iid, or
) |
(?<milestone_name>
[A-Za-z0-9_-]+ | # String-based single-word milestone title, or
"[^"]+" # String-based multi-word milestone surrounded in quotes
[^"\s]+\b | # String-based single-word milestone title, or
"[^"]+" # String-based multi-word milestone surrounded in quotes
)
)
}x