/usr/lib/ruby/vendor_ruby/twitter-text/rewriter.rb is in ruby-twitter-text 1.10.0+gem-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | 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
|