summaryrefslogtreecommitdiff
path: root/app/models/label.rb
diff options
context:
space:
mode:
authorRobert Speicher <rspeicher@gmail.com>2015-05-14 16:59:39 -0400
committerRobert Speicher <rspeicher@gmail.com>2015-05-26 15:48:32 -0400
commitb88da58cb6272a86b6df2e4efe392f10e689a6b2 (patch)
tree1271524cfe6fa5d733cc847c72b96a19810d06aa /app/models/label.rb
parent94af050117df20a661e03055a5002cae90282d6d (diff)
downloadgitlab-ce-b88da58cb6272a86b6df2e4efe392f10e689a6b2.tar.gz
Add `reference_pattern` to Referable models
Diffstat (limited to 'app/models/label.rb')
-rw-r--r--app/models/label.rb16
1 files changed, 16 insertions, 0 deletions
diff --git a/app/models/label.rb b/app/models/label.rb
index 013e6bf5978..8980049cef8 100644
--- a/app/models/label.rb
+++ b/app/models/label.rb
@@ -40,6 +40,22 @@ class Label < ActiveRecord::Base
'~'
end
+ # Pattern used to extract label references from text
+ #
+ # TODO (rspeicher): Limit to double quotes (meh) or disallow single quotes in label names (bad).
+ def self.reference_pattern
+ %r{
+ #{reference_prefix}
+ (?:
+ (?<label_id>\d+) | # Integer-based label ID, or
+ (?<label_name>
+ [A-Za-z0-9_-]+ | # String-based single-word label title
+ ['"][^&\?,]+['"] # String-based multi-word label surrounded in quotes
+ )
+ )
+ }x
+ end
+
# Returns the String necessary to reference this Label in Markdown
#
# format - Symbol format to use (default: :id, optional: :name)