tweet_sanitizer 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b1260735d1dce2e00d66d4817e292d2fee9f047b
4
- data.tar.gz: c0b26d8442c0a2c629a80f68c437c87562a6a0ee
3
+ metadata.gz: f81ed3decd1defa109db3cb5dcd3ff146b9d2377
4
+ data.tar.gz: f788cc11a47f4ccbc626846f3977ca6170ea99f0
5
5
  SHA512:
6
- metadata.gz: e1e79f701eb86fe751dd0f1df9de6853e2482de756acb27361798644e7dd5a07b7296e4d2d63bb654b2f17d9f5790a52852f94620b3a94108100e919b9b00ad0
7
- data.tar.gz: 22e8583b42b7e1b1dc94f7c87b74eeb939484c4ae31199ea91ab55d96cd92f447e3ddb6875b3e06ccec489eda210724fd65f990934ef60de02218fb36902a92d
6
+ metadata.gz: d76f6708fdb977de53aa3f00155d4292203ffaa730a9828ec5af244b5539b4fef23e39e195f945f911383fbe10d0a0825662179be6d71b51dae129e3d6aa4551
7
+ data.tar.gz: 365728cef1fe75877b00cff14e0a0ebbd0d088fecb1a0b51a3fa5654989ee5ce49867d3454b2c05f5a612754a63f8c2f3c972d85d5dac9e7356f20b9d4322aa1
@@ -1,5 +1,11 @@
1
1
  ## Unreleased
2
- [full changelog](https://github.com/sue445/tweet_sanitizer/compare/v0.1.1...master)
2
+ [full changelog](https://github.com/sue445/tweet_sanitizer/compare/v0.2.0...master)
3
+
4
+ ## v0.2.0
5
+ [full changelog](https://github.com/sue445/tweet_sanitizer/compare/v0.1.1...v0.2.0)
6
+
7
+ * Add sanitize options
8
+ * https://github.com/sue445/tweet_sanitizer/pull/12
3
9
 
4
10
  ## v0.1.1
5
11
  [full changelog](https://github.com/sue445/tweet_sanitizer/compare/v0.1.0...v0.1.1)
data/README.md CHANGED
@@ -67,6 +67,40 @@ See following.
67
67
 
68
68
  https://dev.twitter.com/overview/api/upcoming-changes-to-tweets
69
69
 
70
+ ### Options
71
+ Same to `Twitter::Tweet#sanitized_text` and `TweetSanitizer.sanitize`. (By default all are `true`)
72
+
73
+ * `use_retweeted_tweet` : Whether use original retweeted tweet if exists
74
+ * `expand_url` : Whether expand url in tweet (e.g. `t.co` url -> original url)
75
+ * `remove_media_url` : Whether remove media url in tweet
76
+ * `unescape` : Whether unescape in tweet (e.g. `(&gt; &lt;)` -> `(> <)`)
77
+
78
+ #### Example
79
+
80
+ ```ruby
81
+ tweet = @client.status("https://twitter.com/github/status/900456141557080065", tweet_mode: "extended")
82
+
83
+ # all are false
84
+ tweet.sanitized_text(use_retweeted_tweet: false, expand_url: false, remove_media_url: false, unescape: false)
85
+ #=> "RT @GitHubEducation: Announcing two new GitHub Classroom features: Assignment Deadlines and Class Rosters: https://t.co/bNiJnlps5e https://…"
86
+
87
+ # Only use_retweeted_tweet is true
88
+ tweet.sanitized_text(use_retweeted_tweet: true, expand_url: false, remove_media_url: false, unescape: false)
89
+ #=> "Announcing two new GitHub Classroom features: Assignment Deadlines and Class Rosters: https://t.co/bNiJnlps5e https://t.co/C02G05tUvu"
90
+
91
+ # Only expand_url is true
92
+ tweet.sanitized_text(use_retweeted_tweet: false, expand_url: true, remove_media_url: false, unescape: false)
93
+ #=> "RT @GitHubEducation: Announcing two new GitHub Classroom features: Assignment Deadlines and Class Rosters: https://github.com/blog/2418-github-classroom-now-supports-deadlines-and-class-rosters https://…"
94
+
95
+ # Only remove_media_url is true
96
+ tweet.sanitized_text(use_retweeted_tweet: false, expand_url: false, remove_media_url: true, unescape: false)
97
+ #=> "RT @GitHubEducation: Announcing two new GitHub Classroom features: Assignment Deadlines and Class Rosters: https://t.co/bNiJnlps5e https://…"
98
+
99
+ # all are true (default)
100
+ tweet.sanitized_text
101
+ #=> "Announcing two new GitHub Classroom features: Assignment Deadlines and Class Rosters: https://github.com/blog/2418-github-classroom-now-supports-deadlines-and-class-rosters"
102
+ ```
103
+
70
104
  ## Development
71
105
 
72
106
  ```bash
@@ -3,22 +3,30 @@ require "tweet_sanitizer/version"
3
3
  require "tweet_sanitizer/twitter_extension"
4
4
 
5
5
  module TweetSanitizer
6
+ # Sanitize tweet
6
7
  # @param tweet [Twitter:Tweet]
8
+ # @param use_retweeted_tweet [Boolean] Whether use original retweeted tweet if exists
9
+ # @param expand_url [Boolean] Whether expand url in tweet (e.g. `t.co` url -> original url)
10
+ # @param remove_media_url [Boolean] Whether remove media url in tweet
11
+ # @param unescape [Boolean] Whether unescape in tweet (e.g. `(&gt; &lt;)` -> `(> <)`)
7
12
  # @return [String]
8
- def self.sanitize(tweet)
13
+ def self.sanitize(tweet, use_retweeted_tweet: true, expand_url: true, remove_media_url: true, unescape: true)
9
14
  # Original RT status is exists in retweeted_status
10
- tweet = Twitter::Tweet.new(tweet.attrs[:retweeted_status]) if tweet.attrs[:retweeted_status]
15
+ if use_retweeted_tweet && tweet.attrs[:retweeted_status]
16
+ tweet = Twitter::Tweet.new(tweet.attrs[:retweeted_status])
17
+ end
11
18
 
12
- text = expand_urls_text(tweet)
13
- text = remove_media_urls_in_tweet(tweet, text)
14
- text = CGI.unescapeHTML(text)
19
+ text = tweet_full_text(tweet)
20
+ text = expand_urls_text(tweet, text) if expand_url
21
+ text = remove_media_urls_in_tweet(tweet, text) if remove_media_url
22
+ text = CGI.unescapeHTML(text) if unescape
15
23
  text
16
24
  end
17
25
 
18
26
  # @param tweet [Twitter:Tweet]
27
+ # @param text [String]
19
28
  # @return [String]
20
- def self.expand_urls_text(tweet)
21
- text = tweet_full_text(tweet)
29
+ def self.expand_urls_text(tweet, text)
22
30
  return text unless tweet.uris?
23
31
 
24
32
  tweet.uris.reverse.each_with_object(text.dup) do |uri, expanded|
@@ -1,9 +1,20 @@
1
1
  module TweetSanitizer
2
2
  module TwitterExtension
3
3
  refine(Twitter::Tweet) do
4
+ # Sanitize tweet
5
+ # @param use_retweeted_tweet [Boolean] Whether use original retweeted tweet if exists
6
+ # @param expand_url [Boolean] Whether expand url in tweet (e.g. `t.co` url -> original url)
7
+ # @param remove_media_url [Boolean] Whether remove media url in tweet
8
+ # @param unescape [Boolean] Whether unescape in tweet (e.g. `(&gt; &lt;)` -> `(> <)`)
4
9
  # @return [String]
5
- def sanitized_text
6
- TweetSanitizer.sanitize(self)
10
+ def sanitized_text(use_retweeted_tweet: true, expand_url: true, remove_media_url: true, unescape: true)
11
+ TweetSanitizer.sanitize(
12
+ self,
13
+ use_retweeted_tweet: use_retweeted_tweet,
14
+ expand_url: expand_url,
15
+ remove_media_url: remove_media_url,
16
+ unescape: unescape,
17
+ )
7
18
  end
8
19
  end
9
20
  end
@@ -1,3 +1,3 @@
1
1
  module TweetSanitizer
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tweet_sanitizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - sue445
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-08-16 00:00:00.000000000 Z
11
+ date: 2017-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: twitter