diff options
Diffstat (limited to 'lib/banzai/filter/snippet_reference_filter.rb')
-rw-r--r-- | lib/banzai/filter/snippet_reference_filter.rb | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/banzai/filter/snippet_reference_filter.rb b/lib/banzai/filter/snippet_reference_filter.rb new file mode 100644 index 00000000000..1ad5df96f85 --- /dev/null +++ b/lib/banzai/filter/snippet_reference_filter.rb @@ -0,0 +1,25 @@ +require 'banzai' + +module Banzai + module Filter + # HTML filter that replaces snippet references with links. References to + # snippets that do not exist are ignored. + # + # This filter supports cross-project references. + class SnippetReferenceFilter < AbstractReferenceFilter + def self.object_class + Snippet + end + + def find_object(project, id) + project.snippets.find_by(id: id) + end + + def url_for_object(snippet, project) + h = Gitlab::Application.routes.url_helpers + h.namespace_project_snippet_url(project.namespace, project, snippet, + only_path: context[:only_path]) + end + end + end +end |