Sha256: 3b4dedd6ea65d3a9c03e8429a524c31a317977d0d933bdc8c111ce26bf750746
Contents?: true
Size: 1.89 KB
Versions: 2
Compression:
Stored size: 1.89 KB
Contents
module Twitter # A module provides base methods to rewrite usernames, lists, hashtags and URLs. module Rewriter extend self def rewrite_entities(text, entities) chars = text.to_s.to_char_a # sort by start index entities = entities.sort_by{|entity| entity[:indices].first} result = [] last_index = entities.inject(0) do |index, entity| result << chars[index...entity[:indices].first] result << yield(entity, chars) entity[:indices].last end result << chars[last_index..-1] result.flatten.join end # These methods are deprecated, will be removed in future. extend Deprecation def rewrite(text, options = {}) [:hashtags, :urls, :usernames_or_lists].inject(text) do |key| options[key] ? send(:"rewrite_#{key}", text, &options[key]) : text end end deprecate :rewrite, :rewrite_entities def rewrite_usernames_or_lists(text) entities = Extractor.extract_mentions_or_lists_with_indices(text) rewrite_entities(text, entities) do |entity, chars| at = chars[entity[:indices].first] list_slug = entity[:list_slug] list_slug = nil if list_slug.empty? yield(at, entity[:screen_name], list_slug) end end deprecate :rewrite_usernames_or_lists, :rewrite_entities def rewrite_hashtags(text) entities = Extractor.extract_hashtags_with_indices(text) rewrite_entities(text, entities) do |entity, chars| hash = chars[entity[:indices].first] yield(hash, entity[:hashtag]) end end deprecate :rewrite_hashtags, :rewrite_entities def rewrite_urls(text) entities = Extractor.extract_urls_with_indices(text, :extract_url_without_protocol => false) rewrite_entities(text, entities) do |entity, chars| yield(entity[:url]) end end deprecate :rewrite_urls, :rewrite_entities end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
twitter-text-1.11.0 | lib/twitter-text/rewriter.rb |
twitter-text-1.10.0 | lib/twitter-text/rewriter.rb |