class PublifyApp::Textfilter::Twitterfilter

Public Class Methods

filtertext(text) click to toggle source
# File lib/publify_textfilter_twitterfilter.rb, line 11
def self.filtertext(text)
  # First, autolink
  text = text.to_s
  URI.extract(text, %w(http https mailto gopher)) do |item|
    text = text.gsub(item, "<a href='#{item}'>#{item}</a>")
  end

  # hashtags
  text.split.grep(/^#\w+/) do |item|
    # strip_html because Ruby considers "#prouddad</p>" as a word
    item = item.strip_html
    search_item = URI.encode_www_form_component(item)

    uri = "https://twitter.com/search?q=#{search_item}&src=tren&mode=realtime"
    text = text.gsub(item, "<a href='#{uri}'>#{item}</a>")
  end

  # @mention
  text.to_s.split.grep(/@\w+/) do |item|
    item = item.strip_html
    uri = html_escape("https://twitter.com/#{item.delete("@")}")
    text = text.gsub(item, "<a href='#{uri}'>#{item}</a>")
  end

  text
end