t 3.1.0 → 4.0.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 +5 -5
- data/LICENSE.md +1 -1
- data/README.md +9 -7
- data/bin/t +21 -21
- data/lib/t/cli.rb +467 -458
- data/lib/t/collectable.rb +6 -4
- data/lib/t/core_ext/kernel.rb +3 -3
- data/lib/t/core_ext/string.rb +2 -2
- data/lib/t/delete.rb +44 -41
- data/lib/t/editor.rb +5 -5
- data/lib/t/identicon.rb +1 -1
- data/lib/t/list.rb +50 -50
- data/lib/t/printable.rb +68 -64
- data/lib/t/rcfile.rb +18 -17
- data/lib/t/requestable.rb +3 -2
- data/lib/t/search.rb +81 -81
- data/lib/t/set.rb +19 -19
- data/lib/t/stream.rb +67 -60
- data/lib/t/utils.rb +25 -25
- data/lib/t/version.rb +3 -3
- data/lib/t.rb +2 -2
- data/t.gemspec +22 -21
- metadata +23 -37
data/lib/t/utils.rb
CHANGED
@@ -3,45 +3,45 @@ module T
|
|
3
3
|
private
|
4
4
|
|
5
5
|
# https://github.com/rails/rails/blob/bd8a970/actionpack/lib/action_view/helpers/date_helper.rb
|
6
|
-
def distance_of_time_in_words(from_time, to_time = Time.now) # rubocop:disable CyclomaticComplexity
|
6
|
+
def distance_of_time_in_words(from_time, to_time = Time.now) # rubocop:disable Metrics/CyclomaticComplexity
|
7
7
|
seconds = (to_time - from_time).abs
|
8
8
|
minutes = seconds / 60
|
9
9
|
case minutes
|
10
10
|
when 0...1
|
11
11
|
case seconds
|
12
12
|
when 0...1
|
13
|
-
|
13
|
+
"a split second"
|
14
14
|
when 1...2
|
15
|
-
|
15
|
+
"a second"
|
16
16
|
when 2...60
|
17
|
-
format(
|
17
|
+
format("%<seconds>d seconds", seconds: seconds)
|
18
18
|
end
|
19
19
|
when 1...2
|
20
|
-
|
20
|
+
"a minute"
|
21
21
|
when 2...60
|
22
|
-
format(
|
22
|
+
format("%<minutes>d minutes", minutes: minutes)
|
23
23
|
when 60...120
|
24
|
-
|
24
|
+
"an hour"
|
25
25
|
# 120 minutes up to 23.5 hours
|
26
26
|
when 120...1410
|
27
|
-
format(
|
27
|
+
format("%<hours>d hours", hours: (minutes.to_f / 60.0).round)
|
28
28
|
# 23.5 hours up to 48 hours
|
29
29
|
when 1410...2880
|
30
|
-
|
30
|
+
"a day"
|
31
31
|
# 48 hours up to 29.5 days
|
32
32
|
when 2880...42_480
|
33
|
-
format(
|
33
|
+
format("%<days>d days", days: (minutes.to_f / 1440.0).round)
|
34
34
|
# 29.5 days up to 60 days
|
35
35
|
when 42_480...86_400
|
36
|
-
|
36
|
+
"a month"
|
37
37
|
# 60 days up to 11.5 months
|
38
38
|
when 86_400...503_700
|
39
|
-
format(
|
39
|
+
format("%<months>d months", months: (minutes.to_f / 43_800.0).round)
|
40
40
|
# 11.5 months up to 2 years
|
41
41
|
when 503_700...1_051_200
|
42
|
-
|
42
|
+
"a year"
|
43
43
|
else
|
44
|
-
format(
|
44
|
+
format("%<years>d years", years: (minutes.to_f / 525_600.0).round)
|
45
45
|
end
|
46
46
|
end
|
47
47
|
alias time_ago_in_words distance_of_time_in_words
|
@@ -49,7 +49,7 @@ module T
|
|
49
49
|
|
50
50
|
def fetch_users(users, options)
|
51
51
|
format_users!(users, options)
|
52
|
-
require
|
52
|
+
require "retryable"
|
53
53
|
users = Retryable.retryable(tries: 3, on: Twitter::Error, sleep: 0) do
|
54
54
|
yield users
|
55
55
|
end
|
@@ -57,29 +57,29 @@ module T
|
|
57
57
|
end
|
58
58
|
|
59
59
|
def format_users!(users, options)
|
60
|
-
require
|
61
|
-
options[
|
60
|
+
require "t/core_ext/string"
|
61
|
+
options["id"] ? users.collect!(&:to_i) : users.collect!(&:strip_ats)
|
62
62
|
end
|
63
63
|
|
64
64
|
def extract_owner(user_list, options)
|
65
|
-
owner, list_name = user_list.split(
|
65
|
+
owner, list_name = user_list.split("/")
|
66
66
|
if list_name.nil?
|
67
67
|
list_name = owner
|
68
68
|
owner = @rcfile.active_profile[0]
|
69
69
|
else
|
70
|
-
require
|
71
|
-
owner = options[
|
70
|
+
require "t/core_ext/string"
|
71
|
+
owner = options["id"] ? owner.to_i : owner.strip_ats
|
72
72
|
end
|
73
73
|
[owner, list_name]
|
74
74
|
end
|
75
75
|
|
76
76
|
def strip_tags(html)
|
77
|
-
html.gsub(/<.+?>/,
|
77
|
+
html.gsub(/<.+?>/, "")
|
78
78
|
end
|
79
79
|
|
80
|
-
def number_with_delimiter(number, delimiter =
|
81
|
-
digits = number.to_s.
|
82
|
-
groups = digits.reverse.each_slice(3).collect
|
80
|
+
def number_with_delimiter(number, delimiter = ",")
|
81
|
+
digits = number.to_s.chars
|
82
|
+
groups = digits.reverse.each_slice(3).collect(&:join)
|
83
83
|
groups.join(delimiter).reverse
|
84
84
|
end
|
85
85
|
|
@@ -88,7 +88,7 @@ module T
|
|
88
88
|
end
|
89
89
|
|
90
90
|
def decode_full_text(message, decode_full_uris = false)
|
91
|
-
require
|
91
|
+
require "htmlentities"
|
92
92
|
text = HTMLEntities.new.decode(message.full_text)
|
93
93
|
text = decode_uris(text, message.uris) if decode_full_uris
|
94
94
|
text
|
data/lib/t/version.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
module T
|
2
2
|
class Version
|
3
|
-
MAJOR =
|
4
|
-
MINOR =
|
3
|
+
MAJOR = 4
|
4
|
+
MINOR = 0
|
5
5
|
PATCH = 0
|
6
6
|
PRE = nil
|
7
7
|
|
8
8
|
class << self
|
9
9
|
# @return [String]
|
10
10
|
def to_s
|
11
|
-
[MAJOR, MINOR, PATCH, PRE].compact.join(
|
11
|
+
[MAJOR, MINOR, PATCH, PRE].compact.join(".")
|
12
12
|
end
|
13
13
|
end
|
14
14
|
end
|
data/lib/t.rb
CHANGED
data/t.gemspec
CHANGED
@@ -1,27 +1,28 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
|
2
|
+
|
3
|
+
lib = File.expand_path("lib", __dir__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
5
|
+
require "t/version"
|
5
6
|
|
6
7
|
Gem::Specification.new do |spec|
|
7
|
-
spec.add_dependency
|
8
|
-
spec.add_dependency
|
9
|
-
spec.add_dependency
|
10
|
-
spec.add_dependency
|
11
|
-
spec.add_dependency
|
12
|
-
spec.add_dependency
|
13
|
-
spec.add_dependency
|
14
|
-
spec.
|
15
|
-
spec.
|
16
|
-
spec.
|
17
|
-
spec.
|
18
|
-
spec.
|
19
|
-
spec.
|
20
|
-
spec.
|
21
|
-
spec.
|
22
|
-
spec.name =
|
23
|
-
spec.require_paths = %w
|
24
|
-
spec.required_ruby_version =
|
25
|
-
spec.summary =
|
8
|
+
spec.add_dependency "geokit", "~> 1.9"
|
9
|
+
spec.add_dependency "htmlentities", "~> 4.3"
|
10
|
+
spec.add_dependency "launchy", "~> 2.4"
|
11
|
+
spec.add_dependency "oauth", "~> 0.5.1"
|
12
|
+
spec.add_dependency "retryable", "~> 3.0"
|
13
|
+
spec.add_dependency "thor", [">= 0.19.1", "< 2"]
|
14
|
+
spec.add_dependency "twitter", "~> 8.0"
|
15
|
+
spec.author = "Erik Berlin"
|
16
|
+
spec.description = "A command-line power tool for Twitter."
|
17
|
+
spec.email = "sferik@gmail.com"
|
18
|
+
spec.executables = Dir["bin/*"].map { |f| File.basename(f) }
|
19
|
+
spec.files = %w[CONTRIBUTING.md LICENSE.md README.md t.gemspec] + Dir["bin/*"] + Dir["lib/**/*.rb"]
|
20
|
+
spec.homepage = "http://sferik.github.com/t/"
|
21
|
+
spec.licenses = %w[MIT]
|
22
|
+
spec.metadata["rubygems_mfa_required"] = "true"
|
23
|
+
spec.name = "t"
|
24
|
+
spec.require_paths = %w[lib]
|
25
|
+
spec.required_ruby_version = ">= 3.0"
|
26
|
+
spec.summary = "CLI for Twitter"
|
26
27
|
spec.version = T::Version
|
27
28
|
end
|
metadata
CHANGED
@@ -1,57 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: t
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- Erik
|
8
|
-
autorequire:
|
7
|
+
- Erik Berlin
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-04-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: geokit
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '1.9'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '1.9'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: htmlentities
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '4.3'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '4.3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: launchy
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '4
|
47
|
+
version: '2.4'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '4
|
54
|
+
version: '2.4'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: oauth
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '3.0'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '3.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: thor
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -106,28 +106,14 @@ dependencies:
|
|
106
106
|
requirements:
|
107
107
|
- - "~>"
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version: '
|
109
|
+
version: '8.0'
|
110
110
|
type: :runtime
|
111
111
|
prerelease: false
|
112
112
|
version_requirements: !ruby/object:Gem::Requirement
|
113
113
|
requirements:
|
114
114
|
- - "~>"
|
115
115
|
- !ruby/object:Gem::Version
|
116
|
-
version: '
|
117
|
-
- !ruby/object:Gem::Dependency
|
118
|
-
name: bundler
|
119
|
-
requirement: !ruby/object:Gem::Requirement
|
120
|
-
requirements:
|
121
|
-
- - "~>"
|
122
|
-
- !ruby/object:Gem::Version
|
123
|
-
version: '1.0'
|
124
|
-
type: :development
|
125
|
-
prerelease: false
|
126
|
-
version_requirements: !ruby/object:Gem::Requirement
|
127
|
-
requirements:
|
128
|
-
- - "~>"
|
129
|
-
- !ruby/object:Gem::Version
|
130
|
-
version: '1.0'
|
116
|
+
version: '8.0'
|
131
117
|
description: A command-line power tool for Twitter.
|
132
118
|
email: sferik@gmail.com
|
133
119
|
executables:
|
@@ -160,8 +146,9 @@ files:
|
|
160
146
|
homepage: http://sferik.github.com/t/
|
161
147
|
licenses:
|
162
148
|
- MIT
|
163
|
-
metadata:
|
164
|
-
|
149
|
+
metadata:
|
150
|
+
rubygems_mfa_required: 'true'
|
151
|
+
post_install_message:
|
165
152
|
rdoc_options: []
|
166
153
|
require_paths:
|
167
154
|
- lib
|
@@ -169,16 +156,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
169
156
|
requirements:
|
170
157
|
- - ">="
|
171
158
|
- !ruby/object:Gem::Version
|
172
|
-
version: '
|
159
|
+
version: '3.0'
|
173
160
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
174
161
|
requirements:
|
175
162
|
- - ">="
|
176
163
|
- !ruby/object:Gem::Version
|
177
164
|
version: '0'
|
178
165
|
requirements: []
|
179
|
-
|
180
|
-
|
181
|
-
signing_key:
|
166
|
+
rubygems_version: 3.4.12
|
167
|
+
signing_key:
|
182
168
|
specification_version: 4
|
183
169
|
summary: CLI for Twitter
|
184
170
|
test_files: []
|