Sha256: ab1323eca06b5da66bef55adfbc3af96fcea85c2b82657df9996f831fa09e01e

Contents?: true

Size: 932 Bytes

Versions: 1

Compression:

Stored size: 932 Bytes

Contents

require "tweet_sanitizer/version"
require "twitter"

module TweetSanitizer
  # @param tweet [Twitter:Tweet]
  # @return [String]
  def self.sanitize(tweet)
    text = expand_urls_text(tweet)
    text = remove_media_urls_in_tweet(tweet, text)
    text = CGI.unescapeHTML(text)
    text
  end

  # @param tweet [Twitter:Tweet]
  # @return [String]
  def self.expand_urls_text(tweet)
    text = tweet.text.dup
    return text unless tweet.uris?

    tweet.uris.reverse.each_with_object(text) do |uri, expanded|
      pos1 = uri.indices[0]
      pos2 = uri.indices[1]
      expanded[pos1, pos2-pos1] = uri.expanded_url
    end
  end

  # @param tweet [Twitter:Tweet]
  # @param text [String]
  # @return [String]
  def self.remove_media_urls_in_tweet(tweet, text)
    text = text.dup
    return text unless tweet.media?

    tweet.media.each_with_object(text) do |media, t|
      t.gsub!(media.url, "")
      t.strip!
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tweet_sanitizer-0.1.0.beta1 lib/tweet_sanitizer.rb