tweet_sanitizer 0.1.0.beta1 → 0.2.1

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
- SHA1:
3
- metadata.gz: 95ee13f344a020fee8f62754894bff6ce604aa41
4
- data.tar.gz: 0dd22db74f75368271ed62f967141dd009290e40
2
+ SHA256:
3
+ metadata.gz: 4c5714c30ff280753252d5c0a6bfe3365b329199edb2d670190d069e9ff7820b
4
+ data.tar.gz: 0157a784bc6b12391389d14a34a27f41b61805cefbbc272b2e3d1a1066e0fbe3
5
5
  SHA512:
6
- metadata.gz: b9d8a7efbec32e451c484d4f2b9c0bc85d391d890c299a81cb7ac366a2773e6a3636b064ae21404e001331ae9eec156549cea0c459c63002f1f422edda3605f0
7
- data.tar.gz: e075a6c9f8f5e6b29b5ae67e8294edb7f8a69a5f744d552969237a80c59487ef2092b1c87c9ebe85955d15776bfffd5e785fe3bac07a42a6acbd9637ddbb4bd1
6
+ metadata.gz: 18982482212aa7c854803a6770bb14b9d8990e9581fe7f3d27bc6896fd9645c6c408512d1b4e859d3c2c654095f7ce2ea7acb7e85686e542f49cdbdfb751f4d6
7
+ data.tar.gz: 6f82ab38dfdc1bcd8046d2cd1f4c8b28f239d5e5d4dd7f6d4a4af8c943d06a5a41e02d0ec2ab4129347dd610bb5cd203a60f9b9ef1c72bf851c022ea8757df48
data/.coveralls.yml ADDED
@@ -0,0 +1 @@
1
+ repo_token: kZmA3FzhK4Oou7s7aQPRcAW0e8RbRlzhD
@@ -0,0 +1,111 @@
1
+ name: test
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ pull_request:
8
+ types:
9
+ - opened
10
+ - synchronize
11
+ - reopened
12
+ schedule:
13
+ - cron: "0 10 * * 5" # JST 19:00 (Fri)
14
+
15
+ env:
16
+ CI: "true"
17
+
18
+ jobs:
19
+ test:
20
+ runs-on: ubuntu-latest
21
+
22
+ container: ${{ matrix.ruby }}
23
+
24
+ strategy:
25
+ fail-fast: false
26
+
27
+ matrix:
28
+ ruby:
29
+ - ruby:2.2
30
+ - ruby:2.3
31
+ - ruby:2.4
32
+ - ruby:2.5
33
+ - ruby:2.6
34
+ - ruby:2.7
35
+ - ruby:3.0
36
+ - rubylang/ruby:master-nightly-bionic
37
+ include:
38
+ - ruby: rubylang/ruby:master-nightly-bionic
39
+ allow_failures: "true"
40
+
41
+ steps:
42
+ - uses: actions/checkout@v2
43
+
44
+
45
+ - name: Cache vendor/bundle
46
+ uses: actions/cache@v1
47
+ id: cache_gem
48
+ with:
49
+ path: vendor/bundle
50
+ key: v1-gem-${{ runner.os }}-${{ matrix.ruby }}-${{ github.sha }}
51
+ restore-keys: |
52
+ v1-gem-${{ runner.os }}-${{ matrix.ruby }}-
53
+ continue-on-error: ${{ matrix.allow_failures == 'true' }}
54
+
55
+ - name: bundle update
56
+ run: |
57
+ set -xe
58
+ bundle config path vendor/bundle
59
+ bundle update --jobs $(nproc) --retry 3
60
+ continue-on-error: ${{ matrix.allow_failures == 'true' }}
61
+
62
+ - name: Setup Code Climate Test Reporter
63
+ uses: aktions/codeclimate-test-reporter@v1
64
+ with:
65
+ codeclimate-test-reporter-id: ${{ secrets.CC_TEST_REPORTER_ID }}
66
+ command: before-build
67
+ if: matrix.ruby >= 'ruby:2.4'
68
+ continue-on-error: true
69
+
70
+ - name: Run test
71
+ run: |
72
+ set -xe
73
+ bundle exec rspec
74
+ continue-on-error: ${{ matrix.allow_failures == 'true' }}
75
+
76
+ - name: Teardown Code Climate Test Reporter
77
+ uses: aktions/codeclimate-test-reporter@v1
78
+ with:
79
+ codeclimate-test-reporter-id: ${{ secrets.CC_TEST_REPORTER_ID }}
80
+ command: after-build
81
+ if: matrix.ruby >= 'ruby:2.4' && always()
82
+ continue-on-error: true
83
+
84
+ - name: Slack Notification (not success)
85
+ uses: lazy-actions/slatify@master
86
+ if: "! success()"
87
+ continue-on-error: true
88
+ with:
89
+ job_name: ${{ format('*build* ({0})', matrix.ruby) }}
90
+ type: ${{ job.status }}
91
+ icon_emoji: ":octocat:"
92
+ url: ${{ secrets.SLACK_WEBHOOK }}
93
+ token: ${{ secrets.GITHUB_TOKEN }}
94
+
95
+ notify:
96
+ needs:
97
+ - test
98
+
99
+ runs-on: ubuntu-latest
100
+
101
+ steps:
102
+ - name: Slack Notification (success)
103
+ uses: lazy-actions/slatify@master
104
+ if: always()
105
+ continue-on-error: true
106
+ with:
107
+ job_name: '*build*'
108
+ type: ${{ job.status }}
109
+ icon_emoji: ":octocat:"
110
+ url: ${{ secrets.SLACK_WEBHOOK }}
111
+ token: ${{ secrets.GITHUB_TOKEN }}
data/CHANGELOG.md ADDED
@@ -0,0 +1,23 @@
1
+ ## Unreleased
2
+ [full changelog](https://github.com/sue445/tweet_sanitizer/compare/v0.2.1...master)
3
+
4
+ ## v0.2.1
5
+ [full changelog](https://github.com/sue445/tweet_sanitizer/compare/v0.2.0...v0.2.1)
6
+
7
+ * Enable MFA requirement for gem releasing
8
+ * https://github.com/sue445/tweet_sanitizer/pull/32
9
+
10
+ ## v0.2.0
11
+ [full changelog](https://github.com/sue445/tweet_sanitizer/compare/v0.1.1...v0.2.0)
12
+
13
+ * Add sanitize options
14
+ * https://github.com/sue445/tweet_sanitizer/pull/12
15
+
16
+ ## v0.1.1
17
+ [full changelog](https://github.com/sue445/tweet_sanitizer/compare/v0.1.0...v0.1.1)
18
+
19
+ * Use original tweet instead of RT
20
+ * https://github.com/sue445/tweet_sanitizer/pull/10
21
+
22
+ ## v0.1.0
23
+ * first release
data/Gemfile CHANGED
@@ -4,3 +4,10 @@ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
4
 
5
5
  # Specify your gem's dependencies in tweet_sanitizer.gemspec
6
6
  gemspec
7
+
8
+ if Gem::Version.create(RUBY_VERSION) < Gem::Version.create("2.5.0")
9
+ group :test do
10
+ # NOTE: unparser v0.3.0+ requires Ruby 2.5+
11
+ gem "unparser", "< 0.3.0"
12
+ end
13
+ end
data/README.md CHANGED
@@ -1,8 +1,30 @@
1
1
  # TweetSanitizer
2
+ [![Gem Version](https://badge.fury.io/rb/tweet_sanitizer.svg)](https://badge.fury.io/rb/tweet_sanitizer)
3
+ [![Build Status](https://github.com/sue445/tweet_sanitizer/workflows/test/badge.svg?branch=master)](https://github.com/sue445/tweet_sanitizer/actions?query=workflow%3Atest)
4
+ [![Code Climate](https://codeclimate.com/github/sue445/tweet_sanitizer.png)](https://codeclimate.com/github/sue445/tweet_sanitizer)
5
+ [![Coverage Status](https://coveralls.io/repos/github/sue445/tweet_sanitizer/badge.svg?branch=master)](https://coveralls.io/github/sue445/tweet_sanitizer?branch=master)
2
6
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/tweet_sanitizer`. To experiment with that code, run `bin/console` for an interactive prompt.
7
+ This is extension of [twitter](https://github.com/sferik/twitter). Sanitize `Twitter::Tweet#text`
4
8
 
5
- TODO: Delete this and the text above, and describe your gem
9
+ ## Example
10
+ ```ruby
11
+ tweet = @client.status("https://twitter.com/github/status/866677968608927744")
12
+ tweet.text
13
+ #=> "Introducing GitHub Marketplace, a new place to browse and buy integrations using your GitHub account.… https://t.co/dK0Tmcmm72"
14
+ ```
15
+
16
+ ```ruby
17
+ using TweetSanitizer::TwitterExtension
18
+
19
+ extended_tweet = @client.status("https://twitter.com/github/status/866677968608927744", tweet_mode: "extended")
20
+ extended_tweet.sanitized_text
21
+ #=> "Introducing GitHub Marketplace, a new place to browse and buy integrations using your GitHub account. https://github.com/blog/2359-introducing-github-marketplace-and-more-tools-to-customize-your-workflow"
22
+ ```
23
+
24
+ ## Features
25
+ * Expand urls in `Twitter::Tweet#text` (e.g. `t.co` url -> original url)
26
+ * Remove media urls in `Twitter::Tweet#text`
27
+ * Unescape special html characters in `Twitter::Tweet#text` (e.g. `(&gt; &lt;)` -> `(> <)`)
6
28
 
7
29
  ## Installation
8
30
 
@@ -21,8 +43,62 @@ Or install it yourself as:
21
43
  $ gem install tweet_sanitizer
22
44
 
23
45
  ## Usage
46
+ ### Case 1. Use `TweetSanitizer::TwitterExtension` and `Twitter::Tweet#sanitized_text` (Recommended)
47
+ ```ruby
48
+ using TweetSanitizer::TwitterExtension
49
+
50
+ extended_tweet = @client.status("https://twitter.com/github/status/866677968608927744", tweet_mode: "extended")
51
+ extended_tweet.sanitized_text
52
+ ```
53
+
54
+ ### Case 2. Use `TweetSanitizer.sanitize`
55
+ ```ruby
56
+ extended_tweet = @client.status("https://twitter.com/github/status/866677968608927744", tweet_mode: "extended")
57
+ TweetSanitizer.sanitize(extended_tweet)
58
+ ```
59
+
60
+ ### :warning: Note
61
+ When you get `Twitter::Tweet` instance, pass `tweet_mode: "extended"` option to methods. (e.g. `Twitter::REST::Client#status`, `Twitter::REST::Client#search`)
24
62
 
25
- TODO: Write usage instructions here
63
+ Because `full_text` attribute is returned when **only** `tweet_mode=extended` is passed to Twitter API
64
+
65
+ See following.
66
+
67
+ https://dev.twitter.com/overview/api/upcoming-changes-to-tweets
68
+
69
+ ### Options
70
+ Same to `Twitter::Tweet#sanitized_text` and `TweetSanitizer.sanitize`. (By default all are `true`)
71
+
72
+ * `use_retweeted_tweet` : Whether use original retweeted tweet if exists
73
+ * `expand_url` : Whether expand url in tweet (e.g. `t.co` url -> original url)
74
+ * `remove_media_url` : Whether remove media url in tweet
75
+ * `unescape` : Whether unescape in tweet (e.g. `(&gt; &lt;)` -> `(> <)`)
76
+
77
+ #### Example
78
+
79
+ ```ruby
80
+ tweet = @client.status("https://twitter.com/github/status/900456141557080065", tweet_mode: "extended")
81
+
82
+ # all are false
83
+ tweet.sanitized_text(use_retweeted_tweet: false, expand_url: false, remove_media_url: false, unescape: false)
84
+ #=> "RT @GitHubEducation: Announcing two new GitHub Classroom features: Assignment Deadlines and Class Rosters: https://t.co/bNiJnlps5e https://…"
85
+
86
+ # Only use_retweeted_tweet is true
87
+ tweet.sanitized_text(use_retweeted_tweet: true, expand_url: false, remove_media_url: false, unescape: false)
88
+ #=> "Announcing two new GitHub Classroom features: Assignment Deadlines and Class Rosters: https://t.co/bNiJnlps5e https://t.co/C02G05tUvu"
89
+
90
+ # Only expand_url is true
91
+ tweet.sanitized_text(use_retweeted_tweet: false, expand_url: true, remove_media_url: false, unescape: false)
92
+ #=> "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://…"
93
+
94
+ # Only remove_media_url is true
95
+ tweet.sanitized_text(use_retweeted_tweet: false, expand_url: false, remove_media_url: true, unescape: false)
96
+ #=> "RT @GitHubEducation: Announcing two new GitHub Classroom features: Assignment Deadlines and Class Rosters: https://t.co/bNiJnlps5e https://…"
97
+
98
+ # all are true (default)
99
+ tweet.sanitized_text
100
+ #=> "Announcing two new GitHub Classroom features: Assignment Deadlines and Class Rosters: https://github.com/blog/2418-github-classroom-now-supports-deadlines-and-class-rosters"
101
+ ```
26
102
 
27
103
  ## Development
28
104
 
@@ -33,13 +109,13 @@ vi .env
33
109
  ```
34
110
 
35
111
  ```ruby
36
- [1] pry(main)> @client.status("https://twitter.com/sue445/status/896748477262082049")
112
+ [1] pry(main)> @client.status("https://twitter.com/sue445/status/896748477262082049", tweet_mode: "extended")
37
113
  => #<Twitter::Tweet id=896748477262082049>
38
114
  ```
39
115
 
40
116
  ## Contributing
41
117
 
42
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/tweet_sanitizer.
118
+ Bug reports and pull requests are welcome on GitHub at https://github.com/sue445/tweet_sanitizer.
43
119
 
44
120
  ## License
45
121
 
data/bin/console CHANGED
@@ -15,4 +15,6 @@ Dotenv.load
15
15
  config.access_token_secret = ENV["TWITTER_ACCESS_TOKEN_SECRET"]
16
16
  end
17
17
 
18
+ using TweetSanitizer::TwitterExtension
19
+
18
20
  Pry.start
@@ -0,0 +1,21 @@
1
+ module TweetSanitizer
2
+ module TwitterExtension
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;)` -> `(> <)`)
9
+ # @return [String]
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
+ )
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,3 +1,3 @@
1
1
  module TweetSanitizer
2
- VERSION = "0.1.0.beta1"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -1,37 +1,56 @@
1
- require "tweet_sanitizer/version"
2
1
  require "twitter"
2
+ require "tweet_sanitizer/version"
3
+ require "tweet_sanitizer/twitter_extension"
3
4
 
4
5
  module TweetSanitizer
6
+ # Sanitize tweet
5
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;)` -> `(> <)`)
6
12
  # @return [String]
7
- def self.sanitize(tweet)
8
- text = expand_urls_text(tweet)
9
- text = remove_media_urls_in_tweet(tweet, text)
10
- text = CGI.unescapeHTML(text)
13
+ def self.sanitize(tweet, use_retweeted_tweet: true, expand_url: true, remove_media_url: true, unescape: true)
14
+ # Original RT status is exists in retweeted_status
15
+ if use_retweeted_tweet && tweet.attrs[:retweeted_status]
16
+ tweet = Twitter::Tweet.new(tweet.attrs[:retweeted_status])
17
+ end
18
+
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
11
23
  text
12
24
  end
13
25
 
14
26
  # @param tweet [Twitter:Tweet]
27
+ # @param text [String]
15
28
  # @return [String]
16
- def self.expand_urls_text(tweet)
17
- text = tweet.text.dup
29
+ def self.expand_urls_text(tweet, text)
18
30
  return text unless tweet.uris?
19
31
 
20
- tweet.uris.reverse.each_with_object(text) do |uri, expanded|
32
+ tweet.uris.reverse.each_with_object(text.dup) do |uri, expanded|
21
33
  pos1 = uri.indices[0]
22
34
  pos2 = uri.indices[1]
23
35
  expanded[pos1, pos2-pos1] = uri.expanded_url
24
36
  end
25
37
  end
26
38
 
39
+ # @param tweet [Twitter:Tweet]
40
+ # @return [String] `full_text` attribute if exist
41
+ def self.tweet_full_text(tweet)
42
+ # NOTE: Twitter::Tweet#full_text doesn't returns full_text attribute
43
+ # https://github.com/sferik/twitter/blob/v6.1.0/lib/twitter/tweet.rb#L37-L44
44
+ tweet.attrs[:full_text] || tweet.text
45
+ end
46
+
27
47
  # @param tweet [Twitter:Tweet]
28
48
  # @param text [String]
29
49
  # @return [String]
30
50
  def self.remove_media_urls_in_tweet(tweet, text)
31
- text = text.dup
32
51
  return text unless tweet.media?
33
52
 
34
- tweet.media.each_with_object(text) do |media, t|
53
+ tweet.media.each_with_object(text.dup) do |media, t|
35
54
  t.gsub!(media.url, "")
36
55
  t.strip!
37
56
  end
@@ -14,6 +14,13 @@ Gem::Specification.new do |spec|
14
14
  spec.homepage = "https://github.com/sue445/tweet_sanitizer"
15
15
  spec.license = "MIT"
16
16
 
17
+ spec.metadata["homepage_uri"] = spec.homepage
18
+ spec.metadata["source_code_uri"] = spec.homepage
19
+ spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/master/CHANGELOG.md"
20
+ spec.metadata["rubygems_mfa_required"] = "true"
21
+
22
+ spec.required_ruby_version = ">= 2.1.0"
23
+
17
24
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
25
  f.match(%r{^(test|spec|features)/})
19
26
  end
@@ -23,10 +30,13 @@ Gem::Specification.new do |spec|
23
30
 
24
31
  spec.add_dependency "twitter"
25
32
 
26
- spec.add_development_dependency "bundler", "~> 1.15"
33
+ spec.add_development_dependency "bundler", ">= 1.15"
34
+ spec.add_development_dependency "coveralls"
27
35
  spec.add_development_dependency "dotenv"
28
36
  spec.add_development_dependency "pry-byebug"
29
- spec.add_development_dependency "rake", "~> 10.0"
37
+ spec.add_development_dependency "rake", ">= 10.0"
30
38
  spec.add_development_dependency "rspec", "~> 3.0"
31
39
  spec.add_development_dependency "rspec-parameterized"
40
+ spec.add_development_dependency "simplecov"
41
+ spec.add_development_dependency "unparser", ">= 0.4.5"
32
42
  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.0.beta1
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - sue445
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-08-13 00:00:00.000000000 Z
11
+ date: 2021-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: twitter
@@ -28,16 +28,30 @@ dependencies:
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.15'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.15'
41
+ - !ruby/object:Gem::Dependency
42
+ name: coveralls
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: dotenv
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -70,14 +84,14 @@ dependencies:
70
84
  name: rake
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - "~>"
87
+ - - ">="
74
88
  - !ruby/object:Gem::Version
75
89
  version: '10.0'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - "~>"
94
+ - - ">="
81
95
  - !ruby/object:Gem::Version
82
96
  version: '10.0'
83
97
  - !ruby/object:Gem::Dependency
@@ -108,6 +122,34 @@ dependencies:
108
122
  - - ">="
109
123
  - !ruby/object:Gem::Version
110
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: simplecov
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: unparser
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: 0.4.5
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: 0.4.5
111
153
  description: sanitize tweet
112
154
  email:
113
155
  - sue445@sue445.net
@@ -115,10 +157,12 @@ executables: []
115
157
  extensions: []
116
158
  extra_rdoc_files: []
117
159
  files:
160
+ - ".coveralls.yml"
118
161
  - ".env.example"
162
+ - ".github/workflows/test.yml"
119
163
  - ".gitignore"
120
164
  - ".rspec"
121
- - ".travis.yml"
165
+ - CHANGELOG.md
122
166
  - Gemfile
123
167
  - LICENSE.txt
124
168
  - README.md
@@ -126,13 +170,18 @@ files:
126
170
  - bin/console
127
171
  - bin/setup
128
172
  - lib/tweet_sanitizer.rb
173
+ - lib/tweet_sanitizer/twitter_extension.rb
129
174
  - lib/tweet_sanitizer/version.rb
130
175
  - tweet_sanitizer.gemspec
131
176
  homepage: https://github.com/sue445/tweet_sanitizer
132
177
  licenses:
133
178
  - MIT
134
- metadata: {}
135
- post_install_message:
179
+ metadata:
180
+ homepage_uri: https://github.com/sue445/tweet_sanitizer
181
+ source_code_uri: https://github.com/sue445/tweet_sanitizer
182
+ changelog_uri: https://github.com/sue445/tweet_sanitizer/blob/master/CHANGELOG.md
183
+ rubygems_mfa_required: 'true'
184
+ post_install_message:
136
185
  rdoc_options: []
137
186
  require_paths:
138
187
  - lib
@@ -140,16 +189,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
140
189
  requirements:
141
190
  - - ">="
142
191
  - !ruby/object:Gem::Version
143
- version: '0'
192
+ version: 2.1.0
144
193
  required_rubygems_version: !ruby/object:Gem::Requirement
145
194
  requirements:
146
- - - ">"
195
+ - - ">="
147
196
  - !ruby/object:Gem::Version
148
- version: 1.3.1
197
+ version: '0'
149
198
  requirements: []
150
- rubyforge_project:
151
- rubygems_version: 2.6.11
152
- signing_key:
199
+ rubygems_version: 3.2.22
200
+ signing_key:
153
201
  specification_version: 4
154
202
  summary: sanitize tweet
155
203
  test_files: []
data/.travis.yml DELETED
@@ -1,5 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.4.1
5
- before_install: gem install bundler -v 1.15.3