class Qiita::Markdown::Filters::Mention

  1. Adds :mentioned_usernames into result Hash as Array of String.

  2. Replaces @mention with link.

You can pass :allowed_usernames context to limit mentioned usernames.

Constants

IGNORE_PARENTS
MentionPattern

Public Instance Methods

call() click to toggle source

@note Override to use another IGNORE_PARENTS

# File lib/qiita/markdown/filters/mention.rb, line 24
def call
  result[:mentioned_usernames] ||= []

  doc.search(".//text()").each do |node|
    content = node.to_html
    next unless content.include?("@")
    next if has_ancestor?(node, IGNORE_PARENTS)

    html = mention_link_filter(content, base_url, info_url, username_pattern)
    next if html == content

    node.replace(html)
  end
  doc
end

Private Instance Methods

allowed_usernames() click to toggle source
# File lib/qiita/markdown/filters/mention.rb, line 66
def allowed_usernames
  context[:allowed_usernames]
end
has_ancestor?(node, tags) click to toggle source
Calls superclass method
# File lib/qiita/markdown/filters/mention.rb, line 70
def has_ancestor?(node, tags)
  super || (node.parent.parent && node.parent.parent["class"] == "code-lang")
end