diff options
author | Alejandro RodrÃguez <alejandroluis24@gmail.com> | 2016-03-30 23:12:34 -0300 |
---|---|---|
committer | Alejandro RodrÃguez <alejandroluis24@gmail.com> | 2016-04-20 22:12:43 -0300 |
commit | 077f9a4eeef3c64c5f3e9cc5df5442c8817ee1d6 (patch) | |
tree | ddc6a32813a1c417e8aa1ccd315c8c73ba9c0958 /lib/banzai | |
parent | 2ade37e2534108c72d28605cb131dacf771d27d3 (diff) | |
download | gitlab-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.rb | 26 |
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 |