pry-send_tweet.rb 0.13.1 → 1.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 +4 -4
- data/CHANGELOG.md +23 -0
- data/LICENSE.txt +22 -20
- data/PRY_LICENSE.txt +25 -0
- data/README.md +17 -9
- data/art/44-e44743a5bb.jpg +0 -0
- data/art/52-eec4df2edf.jpg +0 -0
- data/lib/pry-send_tweet.rb +7 -8
- data/lib/pry/send_tweet/commands/base_command.rb +5 -1
- data/lib/pry/send_tweet/commands/easter_eggs.rb +185 -0
- data/lib/pry/send_tweet/commands/read_tweets.rb +4 -4
- data/lib/pry/send_tweet/commands/send_tweet.rb +19 -7
- data/lib/pry/send_tweet/commands/twitter_search.rb +2 -2
- data/lib/pry/send_tweet/renderers/tweet_renderer.rb +32 -12
- data/lib/pry/send_tweet/twitter_io.rb +26 -0
- data/lib/pry/send_tweet/version.rb +1 -1
- data/lib/time-ago-in-words/lib/time-ago-in-words.rb +4 -2
- data/pry-send_tweet.gemspec +4 -5
- metadata +12 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cb50a520bd9d7d87d904352181d1bbdf495be3a947a627994878167df6989be9
|
4
|
+
data.tar.gz: c7320bf7d265d5949e35ee9cae98862de3ad58304ffe95ed6ae14d74f5987654
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 57c3a8d2eb322885604eb7dac9d65b5bdeb919b450906dcbbc9c9669cb8486232c0138bec97c15655f4194a1edc06ed8da47ea37f8f2411649aba4133db74300
|
7
|
+
data.tar.gz: 900eab4b0719ee16741e705addcb5d23ae3e8401367f4c8611a94a2aaf23aa3ffb45290f71b39075d47e56d1561ce2a6e508bea29ec0f82e9c1e5e462ad2de96
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,28 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## master
|
4
|
+
|
5
|
+
* Read media contents into memory immediately to avoid the potential for
|
6
|
+
tampering between the time tweet is scheduled and its actual creation.
|
7
|
+
|
8
|
+
* Update `README.md` documentation to include `on-twitter --set-profile-location`.
|
9
|
+
|
10
|
+
* Include the time of the last and next refresh cycle when rendering
|
11
|
+
tweets that are automatically refreshed every `X` seconds.
|
12
|
+
|
13
|
+
* `TimeAgoInWords` represents a past tense Time object as
|
14
|
+
`<number> <unit> before <time>`.
|
15
|
+
|
16
|
+
* A single instance of `Twitter::REST::Client` shared across potentially
|
17
|
+
multiple threads is not going to work, re-create `Twitter::REST::Client`
|
18
|
+
instance before each eval, that is local to its Pry instance.
|
19
|
+
|
20
|
+
* Switch to `Pry#add_sticky_local` for inserting the special local variable,
|
21
|
+
`_twitter_`.
|
22
|
+
|
23
|
+
* Add `config.twitter.default_read_size`, for setting the default number of
|
24
|
+
tweets to request from Twitter when reading tweets via its API.
|
25
|
+
|
3
26
|
## v0.13.1
|
4
27
|
|
5
28
|
* Load `$HOME/.pry-send_tweet.yml` using `YAML.safe_load()`.
|
data/LICENSE.txt
CHANGED
@@ -1,22 +1,24 @@
|
|
1
|
-
|
1
|
+
Copyright (c) 2018, Robert McIntyre
|
2
|
+
All rights reserved.
|
2
3
|
|
3
|
-
|
4
|
-
|
4
|
+
Redistribution and use in source and binary forms, with or without
|
5
|
+
modification, are permitted provided that the following conditions are met:
|
6
|
+
* Redistributions of source code must retain the above copyright
|
7
|
+
notice, this list of conditions and the following disclaimer.
|
8
|
+
* Redistributions in binary form must reproduce the above copyright
|
9
|
+
notice, this list of conditions and the following disclaimer in the
|
10
|
+
documentation and/or other materials provided with the distribution.
|
11
|
+
* Neither the name of the Fry|Pry organisations nor the
|
12
|
+
names of its contributors may be used to endorse or promote products
|
13
|
+
derived from this software without specific prior written permission.
|
5
14
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
22
|
-
SOFTWARE.
|
15
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
16
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
17
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
18
|
+
DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
19
|
+
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
20
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
21
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
22
|
+
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
23
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
24
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
data/PRY_LICENSE.txt
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
License
|
2
|
+
-------
|
3
|
+
|
4
|
+
(The MIT License)
|
5
|
+
|
6
|
+
Copyright (c) 2011-2019 The Pry Team
|
7
|
+
|
8
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
9
|
+
a copy of this software and associated documentation files (the
|
10
|
+
'Software'), to deal in the Software without restriction, including
|
11
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
12
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
13
|
+
permit persons to whom the Software is furnished to do so, subject to
|
14
|
+
the following conditions:
|
15
|
+
|
16
|
+
The above copyright notice and this permission notice shall be
|
17
|
+
included in all copies or substantial portions of the Software.
|
18
|
+
|
19
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
20
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
21
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
22
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
23
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
24
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
25
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# fry-send_tweet.rb
|
2
2
|
|
3
3
|
* [Introduction](#introduction)
|
4
4
|
* [API Access](#api-access)
|
@@ -26,7 +26,7 @@
|
|
26
26
|
|
27
27
|
## <a id='Introduction'>Introduction</a>
|
28
28
|
|
29
|
-
|
29
|
+
An extensible Twitter client that lives inside the Pry and Fry REPLs.
|
30
30
|
|
31
31
|
## <a id='api-access'>API Access</a>
|
32
32
|
|
@@ -47,21 +47,27 @@ __1. Ruby__
|
|
47
47
|
# .pryrc
|
48
48
|
Pry.configure do |config|
|
49
49
|
config.twitter = Pry::Config.from_hash({
|
50
|
-
# Required
|
50
|
+
# Required
|
51
51
|
consumer_key: '<consumer key>',
|
52
52
|
consumer_secret: '<consumer secret>',
|
53
53
|
access_token: '<access token>',
|
54
54
|
access_token_secret: '<access token secret>',
|
55
|
-
# Optional
|
55
|
+
# Optional
|
56
|
+
# The number of tweets to request from Twitter when reading tweets via
|
57
|
+
# its API. The default is 200, a lower number could speed up requests if
|
58
|
+
# you find them to be slow.
|
59
|
+
default_read_size: 100,
|
60
|
+
# Optional
|
56
61
|
# The User-Agent to use when making requests to the Twitter API.
|
57
62
|
# Default is: 'pry-send_tweet.rb vX.Y.Z'.
|
58
63
|
user_agent: 'Custom User-Agent',
|
59
|
-
# Optional
|
64
|
+
# Optional
|
60
65
|
# The width of a box that contains a tweet or user. The default width is 100.
|
61
66
|
box_width: 120,
|
62
|
-
# Optional
|
67
|
+
# Optional
|
63
68
|
# A Yandex API key for translating tweets when using `read-tweets -x`.
|
64
69
|
yandex_key: 'xxx',
|
70
|
+
# Optional
|
65
71
|
# The language tweets should be translated to, the default is 'en' (English).
|
66
72
|
yandex_lang: 'ru'
|
67
73
|
})
|
@@ -80,6 +86,8 @@ consumer_secret: '<consumer secret>'
|
|
80
86
|
access_token: '<access token>'
|
81
87
|
access_token_secret: '<access token secret>'
|
82
88
|
# Optional
|
89
|
+
default_read_size: 100
|
90
|
+
# Optional
|
83
91
|
user_agent: 'Your User-Agent string'
|
84
92
|
# Optional
|
85
93
|
box_width: 120
|
@@ -280,9 +288,9 @@ The `twitter-search` command can be used to search Twitter.
|
|
280
288
|
|
281
289
|
* Set the location visible on your profile:
|
282
290
|
|
283
|
-
# An editor opens (`_pry_.editor`), write
|
284
|
-
#
|
285
|
-
[1] pry(main)> on-twitter --set-profile-
|
291
|
+
# An editor opens (`_pry_.editor`), write a location then hit save & close.
|
292
|
+
# Your profiles location will be updated after closing the editor.
|
293
|
+
[1] pry(main)> on-twitter --set-profile-location
|
286
294
|
|
287
295
|
* Set the color (as a hex value) of links that appear on your profiles timeline:
|
288
296
|
|
data/art/44-e44743a5bb.jpg
CHANGED
Binary file
|
data/art/52-eec4df2edf.jpg
CHANGED
Binary file
|
data/lib/pry-send_tweet.rb
CHANGED
@@ -28,6 +28,7 @@ class Pry
|
|
28
28
|
require 'timeout'
|
29
29
|
require 'yaml'
|
30
30
|
require 'time-ago-in-words'
|
31
|
+
require_relative 'pry/send_tweet/twitter_io'
|
31
32
|
require_relative 'pry/pager/system_pager'
|
32
33
|
require_relative 'pry/send_tweet/tty-box'
|
33
34
|
require_relative 'pry/send_tweet/renderers/tweet_renderer'
|
@@ -38,6 +39,7 @@ class Pry
|
|
38
39
|
require_relative 'pry/send_tweet/commands/read_tweets'
|
39
40
|
require_relative 'pry/send_tweet/commands/twitter_search'
|
40
41
|
require_relative 'pry/send_tweet/commands/twitter_action'
|
42
|
+
require_relative 'pry/send_tweet/commands/easter_eggs'
|
41
43
|
require_relative 'pry/send_tweet/version'
|
42
44
|
|
43
45
|
# @api private
|
@@ -54,22 +56,19 @@ class Pry
|
|
54
56
|
end
|
55
57
|
|
56
58
|
Pry.configure do |config|
|
57
|
-
twitter = nil
|
58
59
|
b = lambda do |*ary|
|
59
60
|
pry = ary[-1]
|
60
|
-
twitter
|
61
|
+
twitter = Twitter::REST::Client.new do |config|
|
61
62
|
Pry::SendTweet.merge_yaml_file! pry.config,
|
62
63
|
File.join(ENV['HOME'], '.pry-send_tweet.yml')
|
63
64
|
config.consumer_key = pry.config.twitter.consumer_key
|
64
65
|
config.consumer_secret = pry.config.twitter.consumer_secret
|
65
66
|
config.access_token = pry.config.twitter.access_token
|
66
67
|
config.access_token_secret = pry.config.twitter.access_token_secret
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
}
|
71
|
-
target = pry.binding_stack[-1]
|
72
|
-
target.local_variable_set :_twitter_, twitter
|
68
|
+
end
|
69
|
+
twitter.user_agent = pry.config.twitter.user_agent ||
|
70
|
+
"pry-send_tweet.rb v#{Pry::SendTweet::VERSION}"
|
71
|
+
pry.add_sticky_local(:_twitter_) { twitter }
|
73
72
|
end
|
74
73
|
config.hooks.add_hook(:before_eval, 'pry_send_tweets_before_eval', b)
|
75
74
|
config.hooks.add_hook(:before_session, 'pry_send_tweets_before_session', b)
|
@@ -16,12 +16,16 @@ class Pry::SendTweet::BaseCommand < Pry::ClassCommand
|
|
16
16
|
raise Pry::CommandError, "_pry_.config.twitter is nil!\n" \
|
17
17
|
"Please set the required keys and tokens to send " \
|
18
18
|
"tweets using Twitters API. \n" \
|
19
|
-
"Visit https://
|
19
|
+
"Visit https://gitlab/trebor8/fry-send_tweet.rb to learn how."
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
23
|
private
|
24
24
|
|
25
|
+
def default_read_size
|
26
|
+
_pry_.config.twitter.default_read_size || Pry::SendTweet::DEFAULT_READ_SIZE
|
27
|
+
end
|
28
|
+
|
25
29
|
def box_height
|
26
30
|
Pry::SendTweet::DEFAULT_BOX_HEIGHT
|
27
31
|
end
|
@@ -0,0 +1,185 @@
|
|
1
|
+
Pry.commands.instance_eval do
|
2
|
+
command(/[Bb]ismillah/, "") {
|
3
|
+
_pry_.pager.page [
|
4
|
+
"The ِBeneficient / All-Compassionate / Most Gracious",
|
5
|
+
"The Most Merciful / Ever-Merciful / Merciful / Most Clement",
|
6
|
+
'The King / Lord / Sovereign / Dominion / Master [also means "the God/ Lord, the One and Only", "Possessor of Supreme Power or Authority"]',
|
7
|
+
"The Holy / All-Holy / All-Pure / Sacred / All-Sacred",
|
8
|
+
"The Giver of Peace / Peace / All-Calm / Ever-Tranquil",
|
9
|
+
"The Granter of Security / the Giver / Faith / Supreme Believer (of Belief) / Giver of Belief / All-Assurer",
|
10
|
+
"The Controller / Absolute Authority Over All / Guardian Over All / Absolute Master / Eternal Dominating",
|
11
|
+
"The Exalted in Might and Power / Exalted / Powerful / Almighty / Mighty",
|
12
|
+
"The Omnipotent / Supreme Power / Possessor of Having All Power / Strong",
|
13
|
+
"The Possessor of Greatness / Supreme / Justly Proud",
|
14
|
+
"The Creator / Creator of the Universe / Maker / True Originator / Absolute Author",
|
15
|
+
"The Initiator / Evolver/ Eternal Spirit Worshipped By All, Have Absolute Power Over All Matters, Nature and Events",
|
16
|
+
"The Fashioner / Shaper / Designer / Artist",
|
17
|
+
"The Repeatedly Forgiving / Absolute Forgiver / Pardoner / Condoner [He Who is Ready to Pardon and Forgive]",
|
18
|
+
"The Subduer / Overcomer / Conqueror / Absolute Vanquisher [Possessor of Who Subdues Evil and Oppression]",
|
19
|
+
"The ِِAbsolute Bestower / Giver / Grantor / Great Donor",
|
20
|
+
"The Provider / Sustainer / Bestower of Sustenance / All-Provider",
|
21
|
+
"The Opener / Opener of the Gates of Profits / Reliever / The Victory Giver",
|
22
|
+
"The Knowing / All-Knower / Omniscient / All-Knowledgeable / Possessor of Knowing Much of Ever Thing / All-Knowing",
|
23
|
+
"The Restrainer / Withholder / Straightener / Absolute Seizer",
|
24
|
+
"The Extender / Expander / Generous Provider",
|
25
|
+
"The Abaser / Humiliator / Downgrader [Possessor of Giving Comfort, Free from Pain Anxiety or Troubles]",
|
26
|
+
"The Exalter / Upgrader [of Ranks]",
|
27
|
+
"The Giver of Honor / Bestower of Honor / Empowerer",
|
28
|
+
"The Giver of Dishonor / the Giver of Disgrace",
|
29
|
+
"The Hearing / All-Hearing / Hearer of Invocation",
|
30
|
+
"The All-Seeing / All-Seer / Ever-Clairvoyant / Clear-Sighted / Clear-Seeing",
|
31
|
+
"The Judge / Arbitrator / Arbiter / All-Decree / Possessor of Authority of Decisions and Judgment",
|
32
|
+
"The Just / Authorized and Straightforward Judge of Dealing Justly",
|
33
|
+
"The Gentle / Benignant / Subtly Kind / All-Subtle",
|
34
|
+
"The All-Aware / Well-Acquainted / Ever-Adept",
|
35
|
+
"The Forbearing / Indulgent / Oft Forbearing / All-Enduring (of Suffering Pain with Patience)",
|
36
|
+
"The Most Great / Ever-Magnificent / Most Supreme / Exalted / Absolute Dignified",
|
37
|
+
"The Ever-Forgiving / Oft-Forgiving",
|
38
|
+
"The Grateful / Appreciative / Multiplier of Rewards",
|
39
|
+
"The Sublime / Ever-Exalted / Supreme / Most High / Most Lofty",
|
40
|
+
"The Great/ Ever-Great / Grand / Most Great / Greatly Abundant of Extent, Capacity and Importance",
|
41
|
+
"The Preserver / Ever-Preserving / All-Watching / Protector / Guardian / Oft-Conservator",
|
42
|
+
"The Nourisher / Feeder",
|
43
|
+
"The Bringer of Judgment / Ever-Reckoner [the One Who Takes Account of All Matters]",
|
44
|
+
"The Majestic / Exalted / Oft-Important / Splendid",
|
45
|
+
"The Noble / Bountiful / Generous / Precious / Honored / Benefactor",
|
46
|
+
"The Watchful / Observer / Ever-Watchful / Watcher",
|
47
|
+
"The Responsive / Answerer / Supreme Answerer / Accepter of Invocation",
|
48
|
+
"The Vast/ All-Embracing / Omnipresent / Boundless / All-Encompassing",
|
49
|
+
"The Wise/ Ever-Wise / Endowed with Sound Judgment",
|
50
|
+
"The Affectionate / Ever-Affectionate/ Loving One/ Loving/ the One Who Tenders and Warm Hearts",
|
51
|
+
"The All-Glorious / Majestic / Ever-Illustrious [Oft-Brilliant in Dignity, Achievements or Actions]",
|
52
|
+
"The Resurrector / Awakener / Arouser / Dispatcher",
|
53
|
+
"The Witness / Testifier / Ever-Witnessing",
|
54
|
+
"The Truth / Reality / the Only One Certainly Sound and Genuine in Truth",
|
55
|
+
"The Trustee, The Dependable, The Advocate",
|
56
|
+
"The Strong",
|
57
|
+
"The Firm, The Steadfast",
|
58
|
+
"The Friend, Helper",
|
59
|
+
"The All Praiseworthy",
|
60
|
+
"The Accounter, The Numberer of All",
|
61
|
+
"The Originator, The Producer, The Initiator",
|
62
|
+
"The Restorer, The Reinstater Who Brings Back All",
|
63
|
+
"The Giver of Life",
|
64
|
+
"The Bringer of Death",
|
65
|
+
"The Living",
|
66
|
+
"The Subsisting, The Independent",
|
67
|
+
"The Perceiver, The Finder, The Unfailing",
|
68
|
+
"The Illustrious, The Magnificent",
|
69
|
+
"The Unique, The Single",
|
70
|
+
"The One, The Indivisible",
|
71
|
+
"The Eternal, The Absolute, The Self-Sufficient",
|
72
|
+
"The All-Powerful, He Who is able to do Everything",
|
73
|
+
"The Determiner, The Dominant",
|
74
|
+
"The Expediter, He Who Brings Forward",
|
75
|
+
"The Delayer, He Who Puts Far Away",
|
76
|
+
"The First, The Beginning-less",
|
77
|
+
"The Last, The Endless",
|
78
|
+
"The Manifest, The Evident, The Outer",
|
79
|
+
"The Hidden, The Unmanifest, The Inner",
|
80
|
+
"The Patron, The Protecting Friend, The Friendly Lord",
|
81
|
+
"The Supremely Exalted, The Most High",
|
82
|
+
"The Good, The Beneficent",
|
83
|
+
"The Ever-Returning, Ever-Relenting",
|
84
|
+
"The Avenger",
|
85
|
+
"The Pardoner, The Effacer, The Forgiver",
|
86
|
+
"The Kind, The Pitying",
|
87
|
+
"The Owner of all Sovereignty",
|
88
|
+
"The Owner, Lord of Majesty and Honour",
|
89
|
+
"The Equitable, The Requiter",
|
90
|
+
"The Gatherer, The Unifier",
|
91
|
+
"The Rich, The Independent",
|
92
|
+
"The Enricher, The Emancipator",
|
93
|
+
"The Preventer, The Withholder, The Shielder, The Defender",
|
94
|
+
"The Distressor, The Harmer, The Afflictor",
|
95
|
+
"The Propitious, The Benefactor, The Source of Good",
|
96
|
+
"The Light",
|
97
|
+
"The Guide, The Way",
|
98
|
+
"The Originator, The Incomparable, The Unattainable, The Beautiful",
|
99
|
+
"The Immutable, The Infinite, The Everlasting",
|
100
|
+
"The Heir, The Inheritor of All",
|
101
|
+
"The Guide to the Right Path",
|
102
|
+
"The Timeless, The Patient"
|
103
|
+
].sample
|
104
|
+
}
|
105
|
+
alias_command '99', 'bismillah'
|
106
|
+
|
107
|
+
DISCO_BISCUITS = {
|
108
|
+
'Steve Miller Band - Abracadabra (12" Version) (Vinyl)' => 'https://www.youtube.com/watch?v=YqloCj1ZNSw',
|
109
|
+
'Billy Joel Piano Man Lyrics' => 'https://www.youtube.com/watch?v=ErEzQOFzPXU',
|
110
|
+
'6IX9INE - STOOPID FT. BOBBY SHMURDA (Official Music Video)' => 'https://www.youtube.com/watch?v=VDa5iGiPgGs',
|
111
|
+
'NOOP DOGG - O M G (3RIS D3D3 REMIX)' => 'https://www.youtube.com/watch?v=PJL8-DZEscs',
|
112
|
+
'The Frames - Star Star **' => 'https://www.youtube.com/watch?v=eMccPJqyg0o',
|
113
|
+
'6ix9ine, Nicki Minaj, Murda Beatz - “FEFE” (Official Music Video)' => 'https://www.youtube.com/watch?v=V_MXGdSBbAI',
|
114
|
+
'Breaking Bad - Jesse\'s emotional speech' => 'https://www.youtube.com/watch?v=aL9aI4JPtPQ',
|
115
|
+
'The Frames - Revelate with lyrics' => 'https://www.youtube.com/watch?v=SPC0sRQbJ98',
|
116
|
+
'The Way I Am' => 'https://www.youtube.com/watch?v=82lB-gI-uuQ',
|
117
|
+
'Coldplay - Fix You' => 'https://www.youtube.com/watch?v=k4V3Mo61fJM',
|
118
|
+
'O Ri Chiraiya lyrics' => 'https://www.youtube.com/watch?v=56bdi4AJFFo',
|
119
|
+
'Will Smith - Fresh Prince of Bel Air (Le Boeuf Remix)' => 'https://www.youtube.com/watch?v=LPvCeNxsG-w',
|
120
|
+
'Midnight Oil - Beds Are Burning' => 'https://www.youtube.com/watch?v=ejorQVy3m8E',
|
121
|
+
'Lenny Kravitz - Are You Gonna Go My Way' => 'https://www.youtube.com/watch?v=8LhCd1W2V0Q',
|
122
|
+
'Yes - Owner Of A Lonely Heart (vinyl)' => 'https://www.youtube.com/watch?v=5mYMFcnOURs',
|
123
|
+
'Toto - Africa (vinyl)' => 'https://www.youtube.com/watch?v=-M0m5mB_q0Y',
|
124
|
+
'Bill Withers - Just The Two Of Us (Doumëa Remix ft. Kevin Cohen)' => 'https://www.youtube.com/watch?v=5mYMFcnOURs',
|
125
|
+
'Pink Floyd - Money (master tape)' => 'https://www.youtube.com/watch?v=gmV9iX-Q754',
|
126
|
+
'Pink Floyd - Wish You Were Here' => 'https://www.youtube.com/watch?v=IXdNnw99-Ic',
|
127
|
+
'CHIEF KEEF - 3HUNNA / shot by @DJKENN_AON' => 'https://www.youtube.com/watch?v=QFEhJfUcD1Q',
|
128
|
+
'Lil Boosie: We Out Chea' => 'https://www.youtube.com/watch?v=tOYnJv3ztKM',
|
129
|
+
'John Legend All Of Me Lyrics' => 'https://www.youtube.com/watch?v=Mk7-GRWq7wA',
|
130
|
+
'Im a trumpsta motherfucker' => 'https://www.youtube.com/watch?v=WhGsq9X1VZM',
|
131
|
+
'Big Man Tyrone Shills Terry Davis\' TempleOS' => 'https://www.youtube.com/watch?v=HFPM-R_d44M',
|
132
|
+
'Sam Song..... Celtic Storm' => 'https://www.youtube.com/watch?v=TjJR-fvGOXc',
|
133
|
+
'Johnny Cash Reads The New Testament: Matthew Chapter 7' => 'https://www.youtube.com/watch?v=27TfH3hvqAQ',
|
134
|
+
'Tina Turner - Golden Eye (HD)' => 'https://www.youtube.com/watch?v=4hGQ97tCTOs',
|
135
|
+
'Red Hot Chili Peppers - By The Way (Lukas Grinys Remix)' => 'https://www.youtube.com/watch?v=lESwb2mU04M',
|
136
|
+
'Avril Lavigne - I Love You' => 'https://www.youtube.com/watch?v=Q0-omvd2u1s',
|
137
|
+
'RIGGA x DXTR - Город не спит 🔥' => 'https://www.youtube.com/watch?v=d3zQTHbEpkM',
|
138
|
+
'2017 11 26T18 46 30+00 00 171126WorshipWorkPlay' => 'https://www.youtube.com/watch?v=i-Re-PbqNRg',
|
139
|
+
'Black Eyed Peas - Where Is The Love (BCX ft. Ellena Soule Rework)' => 'https://www.youtube.com/watch?v=0_Ro2ifLRpw',
|
140
|
+
'Charlie Puth - Attention (D33pSoul Remix)' => 'https://www.youtube.com/watch?v=IMj7bSSOEAk',
|
141
|
+
'Bob Marley - Three little birds(Video Oficial)(HQ)' => 'https://www.youtube.com/watch?v=4k2PJFPu57Y',
|
142
|
+
'War veteran: "Please don\'t talk about leaving"' => 'https://www.youtube.com/watch?v=1jGnaPrjeh4',
|
143
|
+
'Sunshine by Matisyahu Lyrics' => 'https://www.youtube.com/watch?v=xmQ2QrNnZIE',
|
144
|
+
'Martin Garrix - Animals (Official Video)' => 'https://www.youtube.com/watch?v=gCYcHz2k5x0',
|
145
|
+
'DVBBS & Borgeous - TSUNAMI (Original Mix)' => 'https://www.youtube.com/watch?v=0EWbonj7f18',
|
146
|
+
'We Were Soldiers Broken Arrow' => 'https://www.youtube.com/watch?v=ctnK7wdJmAo',
|
147
|
+
'✵ Жизнь дает свое ✵ (2018)' => 'https://www.youtube.com/watch?v=Z2ozs8-W4H4',
|
148
|
+
'Vladimir Putin Style - True Leader 2017' => 'https://www.youtube.com/watch?v=_A4MmpJV94I',
|
149
|
+
'Survivor - Eye Of The Tiger (Rocky OST)' => 'https://www.youtube.com/watch?v=FLZS3jQPn',
|
150
|
+
'Ноггано, AK 47 - Russian Paradise' => 'https://www.youtube.com/watch?v=Z0s1RTZUAqQ',
|
151
|
+
'Meiko - Lights On(Mellen Gi Remix)' => 'https://www.youtube.com/watch?v=HVzL0XjdFfI',
|
152
|
+
'2Pac - Real Talk (2019)' => 'https://www.youtube.com/watch?v=_3LuY9isL_Y',
|
153
|
+
'Девочка верна только одному..♛' => 'https://www.youtube.com/watch?v=UGmRumCtCrc',
|
154
|
+
'Linkin Park - Numb (Areon Remix) /Chester Bennington/' => 'https://www.youtube.com/watch?v=-g29i6IOzUQ',
|
155
|
+
'Steve Miller Band - Abracadabra (12" Version) (Vinyl)' => 'https://www.youtube.com/watch?v=YqloCj1ZNSw',
|
156
|
+
'Gorillaz - Clint Eastwood (Godlips Remix)' => 'https://www.youtube.com/watch?v=JfJLyuXgjOc',
|
157
|
+
'Narwhals song swimming in the ocean !' => 'https://www.youtube.com/watch?v=dP2lyc53qtI',
|
158
|
+
'Justin Bieber - Sorry (D33pSoul Remix) /Tayler Buono Cover/' => 'https://www.youtube.com/watch?v=r5IO6ReMWXE',
|
159
|
+
'Tupac Ft Elton John Ghetto Gospel Lyrics' => 'https://www.youtube.com/watch?v=eC3F1uZJ2jc',
|
160
|
+
'SWAY - STILL SPEEDIN\' (With Lyrics) OUT NOW!!!!' => 'https://www.youtube.com/watch?v=tRldCYkU8nA',
|
161
|
+
'Chief Keef is 300 years old' => 'https://www.youtube.com/watch?v=VWUg1fgYPiE',
|
162
|
+
'DJ Fresh ft Sian Evans - \'Louder\' (Official Video)' => 'https://www.youtube.com/watch?v=eE-dwpWpscU',
|
163
|
+
'50 Cent - Realest Niggaz (ft. 2Pac & The Notorious B.I.G) 2018' => 'https://www.youtube.com/watch?v=QI_7C3dUgqw',
|
164
|
+
'Tupac - Last Muthafucka Breathin\'' => 'https://www.youtube.com/watch?v=F3kN5x51wjE',
|
165
|
+
'Rihanna - Work ft. Drake (Koni Remix) /Emma & Shaun Cover/' => 'https://www.youtube.com/watch?v=ipjXYtoVG-Q',
|
166
|
+
'Money Gang - 2Pac Ft. Notorious B.I.G (HD)' => 'https://www.youtube.com/watch?v=R96NrNdAzQE',
|
167
|
+
'MKJ - Robot /Frank Sinatra/' => 'https://www.youtube.com/watch?v=bGT1SbFW9OQ',
|
168
|
+
'D33pSoul - La Richesse (Original Mix) "My richness is life" /Bob Marley/' => 'https://www.youtube.com/watch?v=tCXqm8EQtWQ',
|
169
|
+
'Damo & Ivor \'Maniac 2012\' (Official Video)' => 'https://www.youtube.com/watch?v=js-Yet5kskA',
|
170
|
+
'6IX9INE "Kooda" (WSHH Exclusive - Official Music Video)' => 'https://www.youtube.com/watch?v=yz7Cn3pHibo'
|
171
|
+
}
|
172
|
+
command '🎧', '' do
|
173
|
+
key = DISCO_BISCUITS.keys.uniq.sample
|
174
|
+
_pry_.output.puts [key, DISCO_BISCUITS[key]].join("\n")
|
175
|
+
end
|
176
|
+
alias_command 'disco-biscuits', '🎧'
|
177
|
+
|
178
|
+
command '300', '' do
|
179
|
+
_pry_.output.puts 'https://www.youtube.com/watch?v=VWUg1fgYPiE'
|
180
|
+
end
|
181
|
+
|
182
|
+
command '8', '' do
|
183
|
+
_pry_.output.puts 'https://www.jesuschristsavior.net/Beatitudes.html'
|
184
|
+
end
|
185
|
+
end
|
@@ -15,7 +15,7 @@ class Pry::SendTweet::ReadTweets < Pry::SendTweet::BaseCommand
|
|
15
15
|
'A username whose timeline you want to read.'
|
16
16
|
o.on 'c=', 'count=',
|
17
17
|
"The number of tweets to read. The maximum is 200, and the default is " \
|
18
|
-
"#{
|
18
|
+
"#{default_read_size}."
|
19
19
|
o.on 'l=', 'likes=',
|
20
20
|
'Read tweets you or another user have liked.',
|
21
21
|
argument: :optional
|
@@ -57,10 +57,10 @@ class Pry::SendTweet::ReadTweets < Pry::SendTweet::BaseCommand
|
|
57
57
|
def show_likes(user:)
|
58
58
|
if user
|
59
59
|
user = search_str_for_users(user).first
|
60
|
-
render_tweets lambda { twitter.favorites(user, count: opts['count'] ||
|
60
|
+
render_tweets lambda { twitter.favorites(user, count: opts['count'] || default_read_size)},
|
61
61
|
title: "#{'@'+user} likes"
|
62
62
|
else
|
63
|
-
render_tweets lambda { twitter.favorites(count: opts['count'] ||
|
63
|
+
render_tweets lambda { twitter.favorites(count: opts['count'] || default_read_size) },
|
64
64
|
title: "Your likes"
|
65
65
|
end
|
66
66
|
end
|
@@ -85,7 +85,7 @@ class Pry::SendTweet::ReadTweets < Pry::SendTweet::BaseCommand
|
|
85
85
|
{
|
86
86
|
tweet_mode: 'extended',
|
87
87
|
include_rts: opts.present?('with-retweets'),
|
88
|
-
count: opts.present?('count') ? opts['count'] :
|
88
|
+
count: opts.present?('count') ? opts['count'] : default_read_size
|
89
89
|
}
|
90
90
|
end
|
91
91
|
|
@@ -29,33 +29,36 @@ class Pry::SendTweet::SendTweet < Pry::SendTweet::BaseCommand
|
|
29
29
|
|
30
30
|
def process(args)
|
31
31
|
super
|
32
|
-
|
33
|
-
create_tweet = opts.present?(:file) ? lambda { send_tweet_with_media(tweet_contents) } :
|
34
|
-
lambda { send_textual_tweet(tweet_contents) }
|
32
|
+
tweet_creator = create_tweet_creator(compose_tweet_with_editor)
|
35
33
|
if opts.present?('delay')
|
36
34
|
time_obj, sleep_seconds = parse_duration_str(opts['delay'])
|
37
35
|
Thread.new {
|
38
36
|
sleep sleep_seconds
|
39
|
-
|
37
|
+
tweet_creator.call
|
40
38
|
}
|
41
39
|
publish_time = (time_obj ? time_obj : Time.now + sleep_seconds)
|
42
40
|
.getlocal
|
43
41
|
.strftime(time_format)
|
44
42
|
page_ok bold("Tweet will be published at approximately #{publish_time}.")
|
45
43
|
else
|
46
|
-
tweet =
|
44
|
+
tweet = tweet_creator.call
|
47
45
|
page_ok tweet.url
|
48
46
|
end
|
49
47
|
end
|
50
48
|
|
51
49
|
private
|
52
50
|
|
51
|
+
def paths_to_twitterio(paths)
|
52
|
+
paths.map do |path|
|
53
|
+
Pry::SendTweet::TwitterIO.new File.binread(path), File.basename(path)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
53
57
|
def no_newline?
|
54
58
|
opts.present?('no-newline')
|
55
59
|
end
|
56
60
|
|
57
|
-
def send_tweet_with_media(tweet_contents)
|
58
|
-
medias = opts['file'].map{|p| File.new p, 'r'}
|
61
|
+
def send_tweet_with_media(tweet_contents, medias)
|
59
62
|
tweet = twitter.update_with_media(tweet_contents, medias, tweet_options)
|
60
63
|
tweet.tap {|t| self_destruct! t.id, opts['self-destruct'] }
|
61
64
|
ensure
|
@@ -102,6 +105,15 @@ class Pry::SendTweet::SendTweet < Pry::SendTweet::BaseCommand
|
|
102
105
|
tweet
|
103
106
|
end
|
104
107
|
|
108
|
+
def create_tweet_creator(tweet_contents)
|
109
|
+
if opts.present?(:file)
|
110
|
+
medias = paths_to_twitterio(opts[:file])
|
111
|
+
lambda { send_tweet_with_media(tweet_contents, medias) }
|
112
|
+
else
|
113
|
+
lambda { send_textual_tweet(tweet_contents) }
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
105
117
|
def validate_tweet!(tweet)
|
106
118
|
if tweet.strip.empty?
|
107
119
|
raise Pry::CommandError, "Can't post an empty tweet."
|
@@ -10,7 +10,7 @@ class Pry::SendTweet::TwitterSearch < Pry::SendTweet::BaseCommand
|
|
10
10
|
|
11
11
|
def options(o)
|
12
12
|
o.on 'c=', 'count=', "The number of tweets to show. Default is " \
|
13
|
-
"#{
|
13
|
+
"#{default_read_size}."
|
14
14
|
end
|
15
15
|
|
16
16
|
def process(query)
|
@@ -29,7 +29,7 @@ class Pry::SendTweet::TwitterSearch < Pry::SendTweet::BaseCommand
|
|
29
29
|
end
|
30
30
|
|
31
31
|
private def search_options
|
32
|
-
{count: opts['count'] ||
|
32
|
+
{count: opts['count'] || default_read_size, tweet_mode: 'extended'}
|
33
33
|
end
|
34
34
|
|
35
35
|
Pry.commands.add_command self
|
@@ -6,9 +6,11 @@ module Pry::SendTweet::TweetRenderer
|
|
6
6
|
pager = Pry::Pager::SystemPager.new(_pry_.output).tap(&:fork)
|
7
7
|
interval = __choose_render_interval(timeout)
|
8
8
|
timeout(interval) do
|
9
|
+
began_at, refresh_at = __find_timeout_range(interval)
|
10
|
+
rendered_title = __choose_title(title, began_at, refresh_at)
|
9
11
|
tweets = __fetch_tweets(tweet_fetcher)
|
10
12
|
tweets.empty? ? pager.write("No tweets to show.") :
|
11
|
-
pager.write(__render_tweets(
|
13
|
+
pager.write(__render_tweets(rendered_title, tweets))
|
12
14
|
end
|
13
15
|
rescue Pry::Pager::StopPaging, Interrupt
|
14
16
|
pager.fast_exit!
|
@@ -24,8 +26,9 @@ module Pry::SendTweet::TweetRenderer
|
|
24
26
|
private
|
25
27
|
# @api private
|
26
28
|
def __render_tweets(title, tweets)
|
27
|
-
title
|
28
|
-
|
29
|
+
title + tweets.map {|tweet|
|
30
|
+
__render_tweet(tweet)
|
31
|
+
}.join("\n")
|
29
32
|
end
|
30
33
|
|
31
34
|
# @api private
|
@@ -42,10 +45,9 @@ module Pry::SendTweet::TweetRenderer
|
|
42
45
|
def __render_tweet_title(tweet)
|
43
46
|
user, created_at = tweet.user, tweet.created_at.getlocal
|
44
47
|
title = [
|
45
|
-
|
46
|
-
time_ago_in_words(created_at)
|
47
|
-
|
48
|
-
].join bright_blue(" | ")
|
48
|
+
red("@#{user.screen_name}"),
|
49
|
+
"Around " + time_ago_in_words(created_at) + " before Last Refresh"
|
50
|
+
].join green(" | ")
|
49
51
|
" #{title} "
|
50
52
|
end
|
51
53
|
|
@@ -72,12 +74,30 @@ module Pry::SendTweet::TweetRenderer
|
|
72
74
|
end
|
73
75
|
end
|
74
76
|
|
77
|
+
# @api private
|
78
|
+
def __choose_title(title, began_at, refresh_at)
|
79
|
+
title = bold green(title || "Twitter")
|
80
|
+
timestamps = [bold("Last Refresh: "), began_at.strftime(time_format), "\n"]
|
81
|
+
timestamps.concat [
|
82
|
+
bold("Next Refresh: "),
|
83
|
+
refresh_at.strftime(time_format),
|
84
|
+
"\n"
|
85
|
+
] if refresh_at
|
86
|
+
title = "#{title}\n\n"
|
87
|
+
title += timestamps.join
|
88
|
+
title << "\n\n"
|
89
|
+
title
|
90
|
+
end
|
91
|
+
|
75
92
|
# @api private
|
76
93
|
def __choose_render_interval(timeout)
|
77
|
-
if timeout == false
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
94
|
+
return nil if timeout == false
|
95
|
+
timeout || (60*5)
|
96
|
+
end
|
97
|
+
|
98
|
+
# @api private
|
99
|
+
def __find_timeout_range(seconds)
|
100
|
+
seconds ? [Time.now.getlocal, (Time.now + seconds).getlocal] :
|
101
|
+
[Time.now.getlocal, nil]
|
82
102
|
end
|
83
103
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#
|
2
|
+
# TwitterIO is a child of StringIO that implements an interface compatible
|
3
|
+
# with the expectations of the Twitter gem. The twitter gem expects a File object
|
4
|
+
# when uploading media, not an in-memory string as we would like.
|
5
|
+
#
|
6
|
+
class Pry::SendTweet::TwitterIO < StringIO
|
7
|
+
def initialize(str, basename)
|
8
|
+
super(str)
|
9
|
+
@basename = basename
|
10
|
+
end
|
11
|
+
|
12
|
+
def basename
|
13
|
+
@basename
|
14
|
+
end
|
15
|
+
|
16
|
+
#
|
17
|
+
# For compatibility with File.basename, which attempts String coercion when
|
18
|
+
# given an object other than a String.
|
19
|
+
#
|
20
|
+
# @example
|
21
|
+
# File.basename(twitter_io) => {TwitterIO#basename}
|
22
|
+
#
|
23
|
+
def to_str
|
24
|
+
basename
|
25
|
+
end
|
26
|
+
end
|
@@ -19,11 +19,13 @@ module TimeAgoInWords
|
|
19
19
|
module_function
|
20
20
|
def time_ago_in_words(time)
|
21
21
|
time_difference = Time.now.to_i - time.to_i
|
22
|
-
|
22
|
+
if time_difference <= 0
|
23
|
+
return "0 seconds since Last Refresh"
|
24
|
+
end
|
23
25
|
unit = get_unit(time_difference)
|
24
26
|
unit_rep = time_difference > 1 ? "#{unit.to_s.downcase}s" : unit.to_s.downcase
|
25
27
|
unit_difference = time_difference / Units.const_get(unit.capitalize)
|
26
|
-
"#{unit_difference} #{unit_rep}
|
28
|
+
"#{unit_difference} #{unit_rep}"
|
27
29
|
end
|
28
30
|
|
29
31
|
private
|
data/pry-send_tweet.gemspec
CHANGED
@@ -2,12 +2,12 @@ Kernel.require_relative 'lib/pry/send_tweet/version'
|
|
2
2
|
Gem::Specification.new do |spec|
|
3
3
|
spec.name = "pry-send_tweet.rb"
|
4
4
|
spec.version = Pry::SendTweet::VERSION
|
5
|
-
spec.authors = ["
|
5
|
+
spec.authors = ["Pry developers", "Fry developers", "trebor8"]
|
6
6
|
spec.email = "trebor.g@protonmail.com"
|
7
|
-
spec.summary = "
|
7
|
+
spec.summary = "An extensible Twitter client living inside the Pry and Fry REPLs."
|
8
8
|
spec.description = spec.summary
|
9
|
-
spec.homepage = "https://
|
10
|
-
spec.licenses = ["
|
9
|
+
spec.homepage = "https://gitlab.com/trebor8/fry-send_tweet.rb"
|
10
|
+
spec.licenses = ["BSD (3-Clause)"]
|
11
11
|
spec.require_paths = ["lib", "lib/time-ago-in-words/lib"]
|
12
12
|
spec.files = Dir[
|
13
13
|
"*file",
|
@@ -17,7 +17,6 @@ Gem::Specification.new do |spec|
|
|
17
17
|
"*.{txt,gemspec,md,sh}",
|
18
18
|
"lib/**/*.{rb,gemspec,md}"
|
19
19
|
]
|
20
|
-
spec.add_runtime_dependency "pry", "~> 0.12"
|
21
20
|
spec.add_runtime_dependency "twitter", "~> 6.0"
|
22
21
|
spec.add_runtime_dependency "tty-box", "= 0.3.0"
|
23
22
|
spec.add_runtime_dependency "unicode-display_width", "~> 1.4"
|
metadata
CHANGED
@@ -1,29 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pry-send_tweet.rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Pry developers
|
8
|
+
- Fry developers
|
9
|
+
- trebor8
|
8
10
|
autorequire:
|
9
11
|
bindir: bin
|
10
12
|
cert_chain: []
|
11
|
-
date: 2019-
|
13
|
+
date: 2019-02-15 00:00:00.000000000 Z
|
12
14
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: pry
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0.12'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0.12'
|
27
15
|
- !ruby/object:Gem::Dependency
|
28
16
|
name: twitter
|
29
17
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,7 +54,7 @@ dependencies:
|
|
66
54
|
- - "~>"
|
67
55
|
- !ruby/object:Gem::Version
|
68
56
|
version: '1.4'
|
69
|
-
description:
|
57
|
+
description: An extensible Twitter client living inside the Pry and Fry REPLs.
|
70
58
|
email: trebor.g@protonmail.com
|
71
59
|
executables: []
|
72
60
|
extensions: []
|
@@ -74,6 +62,7 @@ extra_rdoc_files: []
|
|
74
62
|
files:
|
75
63
|
- CHANGELOG.md
|
76
64
|
- LICENSE.txt
|
65
|
+
- PRY_LICENSE.txt
|
77
66
|
- README.md
|
78
67
|
- Vagrantfile
|
79
68
|
- art/44-e44743a5bb.jpg
|
@@ -81,6 +70,7 @@ files:
|
|
81
70
|
- lib/pry-send_tweet.rb
|
82
71
|
- lib/pry/pager/system_pager.rb
|
83
72
|
- lib/pry/send_tweet/commands/base_command.rb
|
73
|
+
- lib/pry/send_tweet/commands/easter_eggs.rb
|
84
74
|
- lib/pry/send_tweet/commands/paging/paging_support.rb
|
85
75
|
- lib/pry/send_tweet/commands/read_tweets.rb
|
86
76
|
- lib/pry/send_tweet/commands/read_tweets/translate_actions.rb
|
@@ -96,6 +86,7 @@ files:
|
|
96
86
|
- lib/pry/send_tweet/renderers/tweet_renderer.rb
|
97
87
|
- lib/pry/send_tweet/renderers/user_renderer.rb
|
98
88
|
- lib/pry/send_tweet/tty-box.rb
|
89
|
+
- lib/pry/send_tweet/twitter_io.rb
|
99
90
|
- lib/pry/send_tweet/version.rb
|
100
91
|
- lib/time-ago-in-words/README.md
|
101
92
|
- lib/time-ago-in-words/lib/time-ago-in-words.rb
|
@@ -104,9 +95,9 @@ files:
|
|
104
95
|
- samples/freebsd-zshrc
|
105
96
|
- samples/tmuxinator-vagrant.yml
|
106
97
|
- vms/freebsd.rb
|
107
|
-
homepage: https://
|
98
|
+
homepage: https://gitlab.com/trebor8/fry-send_tweet.rb
|
108
99
|
licenses:
|
109
|
-
-
|
100
|
+
- BSD (3-Clause)
|
110
101
|
metadata: {}
|
111
102
|
post_install_message:
|
112
103
|
rdoc_options: []
|
@@ -128,5 +119,5 @@ rubyforge_project:
|
|
128
119
|
rubygems_version: 2.7.8
|
129
120
|
signing_key:
|
130
121
|
specification_version: 4
|
131
|
-
summary:
|
122
|
+
summary: An extensible Twitter client living inside the Pry and Fry REPLs.
|
132
123
|
test_files: []
|