Module: Twitter::Rewriter
Overview
A module provides base methods to rewrite usernames, lists, hashtags and URLs.
Instance Method Summary collapse
- #rewrite(text, options = {}) ⇒ Object
- #rewrite_entities(text, entities) ⇒ Object
- #rewrite_hashtags(text) ⇒ Object
- #rewrite_urls(text) ⇒ Object
- #rewrite_usernames_or_lists(text) ⇒ Object
Methods included from Deprecation
Instance Method Details
#rewrite(text, options = {}) ⇒ Object
24 25 26 27 28 |
# File 'lib/ritter-text/rewriter.rb', line 24 def rewrite(text, = {}) [:hashtags, :urls, :usernames_or_lists].inject(text) do |key| [key] ? send(:"rewrite_#{key}", text, &[key]) : text end end |
#rewrite_entities(text, entities) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/ritter-text/rewriter.rb', line 4 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 |last_index, entity| result << chars[last_index...entity[:indices].first] result << yield(entity, chars) entity[:indices].last end result << chars[last_index..-1] result.flatten.join end |
#rewrite_hashtags(text) ⇒ Object
42 43 44 45 46 47 48 |
# File 'lib/ritter-text/rewriter.rb', line 42 def (text) entities = Extractor.(text) rewrite_entities(text, entities) do |entity, chars| hash = chars[entity[:indices].first] yield(hash, entity[:hashtag]) end end |
#rewrite_urls(text) ⇒ Object
51 52 53 54 55 56 |
# File 'lib/ritter-text/rewriter.rb', line 51 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 |
#rewrite_usernames_or_lists(text) ⇒ Object
31 32 33 34 35 36 37 38 39 |
# File 'lib/ritter-text/rewriter.rb', line 31 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 |