summaryrefslogtreecommitdiff
path: root/lib/banzai
diff options
context:
space:
mode:
authorAlejandro Rodríguez <alejandroluis24@gmail.com>2016-03-30 23:12:34 -0300
committerAlejandro Rodríguez <alejandroluis24@gmail.com>2016-04-20 22:12:43 -0300
commit077f9a4eeef3c64c5f3e9cc5df5442c8817ee1d6 (patch)
treeddc6a32813a1c417e8aa1ccd315c8c73ba9c0958 /lib/banzai
parent2ade37e2534108c72d28605cb131dacf771d27d3 (diff)
downloadgitlab-ce-077f9a4eeef3c64c5f3e9cc5df5442c8817ee1d6.tar.gz
Implementing special GitLab markdown reference for milestones
Using the syntax proposed in #13829 [project_reference]%(milestone_id | milestone_name) to get a link to the referred milestone.
Diffstat (limited to 'lib/banzai')
-rw-r--r--lib/banzai/filter/milestone_reference_filter.rb26
1 files changed, 24 insertions, 2 deletions
diff --git a/lib/banzai/filter/milestone_reference_filter.rb b/lib/banzai/filter/milestone_reference_filter.rb
index 4cb82178024..2c90fd4d385 100644
--- a/lib/banzai/filter/milestone_reference_filter.rb
+++ b/lib/banzai/filter/milestone_reference_filter.rb
@@ -7,14 +7,36 @@ module Banzai
end
def find_object(project, id)
- project.milestones.find_by(iid: id)
+ project.milestones.find(id)
end
- def url_for_object(issue, project)
+ def references_in(text, pattern = Milestone.reference_pattern)
+ text.gsub(pattern) do |match|
+ project = project_from_ref($~[:project])
+ params = milestone_params($~[:milestone_id].to_i, $~[:milestone_name])
+ milestone = project.milestones.find_by(params)
+
+ if milestone
+ yield match, milestone.id, $~[:project], $~
+ else
+ match
+ end
+ end
+ end
+
+ def url_for_object(milestone, project)
h = Gitlab::Routing.url_helpers
h.namespace_project_milestone_url(project.namespace, project, milestone,
only_path: context[:only_path])
end
+
+ def milestone_params(id, name)
+ if name
+ { name: name.tr('"', '') }
+ else
+ { id: id }
+ end
+ end
end
end
end