module GitlabKramdown::Parser::Reference
Special GitLab References
This parser implements any non context-specific reference as described in the GitLab Flavored Markdown reference
@see docs.gitlab.com/ee/user/markdown.html#special-gitlab-references
Constants
- ALWAYS_FULL_NAMESPACE_FORMAT_REGEX
- FULL_NAMESPACE_FORMAT_REGEX
- NAMESPACE_FORMAT_REGEX
- PATH_REGEX
- PROJECT_COMMIT_DIFF_PATTERN
- PROJECT_COMMIT_PATTERN
- PROJECT_ISSUE_PATTERN
- PROJECT_LABEL_PATTERN
- PROJECT_MERGE_REQUEST_PATTERN
- PROJECT_SNIPPET_PATTERN
- USER_GROUP_PATTERN
Public Class Methods
included(klass)
click to toggle source
# File lib/gitlab_kramdown/parser/reference.rb, line 70 def self.included(klass) klass.define_parser(:user_group_mention, USER_GROUP_PATTERN, '@') klass.define_parser(:commit, PROJECT_COMMIT_PATTERN, '@') klass.define_parser(:commit_diff, PROJECT_COMMIT_DIFF_PATTERN, '@') klass.define_parser(:issue, PROJECT_ISSUE_PATTERN, '#') klass.define_parser(:merge_request, PROJECT_MERGE_REQUEST_PATTERN, '\!') klass.define_parser(:snippet, PROJECT_SNIPPET_PATTERN, '\$') klass.define_parser(:label, PROJECT_LABEL_PATTERN, '\~') end
Public Instance Methods
parse_commit()
click to toggle source
# File lib/gitlab_kramdown/parser/reference.rb, line 97 def parse_commit start_line_number = @src.current_line_number @src.pos += @src.matched_size href = "#{@options[:gitlab_url]}/#{@src[:namespace]}/commit/#{@src[:commit]}" el = Kramdown::Element.new(:a, nil, { 'href' => href }, location: start_line_number) add_text(@src[0], el) @tree.children << el end
parse_commit_diff()
click to toggle source
# File lib/gitlab_kramdown/parser/reference.rb, line 108 def parse_commit_diff start_line_number = @src.current_line_number @src.pos += @src.matched_size href = "#{@options[:gitlab_url]}/#{@src[:namespace]}/compare/" \ "#{@src[:commit_source]}...#{@src[:commit_target]}" el = Kramdown::Element.new(:a, nil, { 'href' => href }, location: start_line_number) add_text(@src[0], el) @tree.children << el end
parse_issue()
click to toggle source
# File lib/gitlab_kramdown/parser/reference.rb, line 120 def parse_issue start_line_number = @src.current_line_number @src.pos += @src.matched_size href = "#{@options[:gitlab_url]}/#{@src[:namespace]}/issues/#{@src[:issue]}" el = Kramdown::Element.new(:a, nil, { 'href' => href }, location: start_line_number) add_text(@src[0], el) @tree.children << el end
parse_label()
click to toggle source
# File lib/gitlab_kramdown/parser/reference.rb, line 153 def parse_label start_line_number = @src.current_line_number @src.pos += @src.matched_size label_param = @src[:label].delete('"').tr(' ', '+') href = "#{@options[:gitlab_url]}/#{@src[:namespace]}/issues?label_name=#{label_param}" el = Kramdown::Element.new(:a, nil, { 'href' => href }, location: start_line_number) add_text(@src[0], el) @tree.children << el end
parse_merge_request()
click to toggle source
# File lib/gitlab_kramdown/parser/reference.rb, line 131 def parse_merge_request start_line_number = @src.current_line_number @src.pos += @src.matched_size href = "#{@options[:gitlab_url]}/#{@src[:namespace]}/merge_requests/#{@src[:merge_request]}" el = Kramdown::Element.new(:a, nil, { 'href' => href }, location: start_line_number) add_text(@src[0], el) @tree.children << el end
parse_snippet()
click to toggle source
# File lib/gitlab_kramdown/parser/reference.rb, line 142 def parse_snippet start_line_number = @src.current_line_number @src.pos += @src.matched_size href = "#{@options[:gitlab_url]}/#{@src[:namespace]}/snippets/#{@src[:snippet]}" el = Kramdown::Element.new(:a, nil, { 'href' => href }, location: start_line_number) add_text(@src[0], el) @tree.children << el end
parse_user_group_mention()
click to toggle source
# File lib/gitlab_kramdown/parser/reference.rb, line 80 def parse_user_group_mention start_line_number = @src.current_line_number @src.pos += @src.matched_size # should not start with anything that looks like project/namespace if @src.pre_match.match?(/[a-zA-Z0-9_\-]\Z/) add_text(@src[0]) return end href = "#{@options[:gitlab_url]}/#{@src[:user]}" el = Kramdown::Element.new(:a, nil, { 'href' => href }, location: start_line_number) add_text(@src[0], el) @tree.children << el end