Sha256: 7a7b88c23ee18ccedfcd37e4424ed860e3343e4c7d698e790292753f623fdf1a

Contents?: true

Size: 721 Bytes

Versions: 2

Compression:

Stored size: 721 Bytes

Contents

# frozen_string_literal: true
module Thredded
  class AtUsers
    # @param users_provider [#call(usernames)] given usernames, returns a list of users.
    def self.render(content, users_provider, view_context)
      at_names = AtNotificationExtractor.new(content).run

      if at_names.any?
        members = users_provider.call(at_names)

        members.each do |member|
          member_path = Thredded.user_path(view_context, member)
          name = member.to_s
          content.gsub!(/(^|[\s>])(@#{name.include?(' ') ? %("#{name}") : name})\b/i,
                        %(\1<a href="#{ERB::Util.html_escape member_path}">@#{ERB::Util.html_escape name}</a>))
        end
      end

      content
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
thredded-0.6.0 lib/thredded/at_users.rb
thredded-0.5.1 lib/thredded/at_users.rb