pry-send_tweet.rb 0.10.0 → 0.10.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 60dbebe89f0db1ac7023b9e2e30f9d06413b704a9f06bf46c989afd0d4f6c09f
4
- data.tar.gz: 484501f241913b90d987ec10de8710d5d00e1940b19ad095a49c2dd164bcfe3b
3
+ metadata.gz: 4464a0e5487676221d3f0809dab2dcdb2ac192d84ded42dbbae6cb9d8593e459
4
+ data.tar.gz: 4944d0716568bb7687a5ca0917cd2df1772b4af5cb2bb25117a51d79a8ea9a45
5
5
  SHA512:
6
- metadata.gz: 79c7445acdebf4fe759f7de18d814627bca324bb29ac3f8fa5b3fd6e010a288360fd86759ef24fabc3b43356732e375f0c2b1cf449c2c9746d147e98297db970
7
- data.tar.gz: 6c0d1f74bfa20d83a5c82ac32d97f611220737d012f7a2bb86951a71c142a2f48ab12b211d3322c40d95d452d2b76cbef84bbb145f145703b260ea2ade2c5df5
6
+ metadata.gz: 39cca7be237772f1ee3e4ad9c60d4db9bd35a7e96a23274c3d1bb852b838879b20dffe8a7c63568980e3ab022d67b2ae04c2615afea4e99f1fb6469c87bc2509
7
+ data.tar.gz: 71ffdc012830a01ceb5a03b1b9ada4bb8899e7422a0e74e6824ff19296cea032fabca05d511dbdcbd202baf37816547414c89b01ad68806f2a083be8e46b5156
data/CHANGELOG.md CHANGED
@@ -1,6 +1,17 @@
1
1
  # CHANGELOG
2
2
 
3
- ## master
3
+ ## v0.10.1
4
+
5
+ * Improve forking implementation in `Pry::SendTweet::TweetRenderer`.
6
+
7
+ * Improve the workaround for weak unicode support in tty-box.
8
+
9
+ * Add `Pry.config.twitter.box_height` - for defining the height of the box that
10
+ contains a tweet or user.
11
+
12
+ * Add `Pry.config.twitter.box_width`, formerly `Pry.config.twitter.line_width`.
13
+
14
+ ## v0.10.0
4
15
 
5
16
  * Avoid a negative argument error when following / unfollowing other user(s) by
6
17
  bypassing tty-box for those operations.
data/README.md CHANGED
@@ -18,6 +18,8 @@
18
18
  * [Tip: Command Aliases](#tip)
19
19
  * [Multi-tasking: tmux / screen](#multi-tasking)
20
20
  * [Install](#install)
21
+ * [Rubygem](#install-rubygem)
22
+ * [Docker](#install-docker)
21
23
  * [License](#license)
22
24
 
23
25
  ## <a id='Introduction'>Introduction</a>
@@ -27,8 +29,10 @@ A Twitter client for the Pry REPL.
27
29
  ## <a id='api-access'>API Access</a>
28
30
 
29
31
  Using the Twitter API requires a developer account.
30
- Follow the instructions at [https://developer.twitter.com](https://developer.twitter.com)
31
- if you haven't already setup access to the Twitter API.
32
+ Follow the instructions at
33
+ [https://developer.twitter.com](https://developer.twitter.com)
34
+ if you haven't already
35
+ setup access to the Twitter API.
32
36
 
33
37
  ## <a id='configuration'>Configuration (required)</a>
34
38
 
@@ -51,10 +55,12 @@ Pry.configure do |config|
51
55
  access_token_secret: '<access token secret>'
52
56
  # Optional configuration
53
57
  # The User-Agent to use when making requests to the Twitter API.
54
- # Default is: 'pry-send_tweet.rb vX.Y.Z'
58
+ # Default is: 'pry-send_tweet.rb vX.Y.Z'.
55
59
  user_agent: 'Custom User-Agent',
56
- # The width of a line before word wrapping occurs, the default is 100.
57
- line_width: 120
60
+ # The width & height of a box that contains a tweet or user.
61
+ # The default width is 100 and the default height is 8.
62
+ box_width: 120,
63
+ box_height: 10
58
64
  })
59
65
  end
60
66
  ```
@@ -238,7 +244,7 @@ The `twitter-search` command can be used to search Twitter.
238
244
  * Set the color (as a hex value) of links that appear on your profiles timeline:
239
245
 
240
246
  [1] pry(main)> on-twitter --set-profile-link-color=#CC0000
241
-
247
+
242
248
  * Set the URL visible on your profile:
243
249
 
244
250
  [1] pry(main)> on-twitter --set-profile-url=https://github.com/you
@@ -321,14 +327,15 @@ as inspiration for your own configuration.
321
327
 
322
328
  ## <a id='install'>Install</a>
323
329
 
324
- Install the gem:
330
+ ### <a id='install-rubygem'>Rubygem</a>
325
331
 
326
332
  $ gem install pry-send_tweet.rb
327
333
 
328
- There's also the option to clone this repository and then use the provided
329
- `Dockerfile` to run pry-send_tweet.rb inside a Docker container.
330
- The container is configured to use `emacs` when sending tweets and when using
331
- other commands that open an editor.
334
+ ### <a id='install-docker'>Docker</a>
335
+
336
+ This method is how I install and use `pry-send_tweet.rb`, I recommend giving it
337
+ a try - especially if on Windows. The Docker container is configured to use `emacs`
338
+ when sending tweets and when using other commands that open an editor.
332
339
 
333
340
  $ git clone https://github.com/r-obert/pry-send_tweet.rb
334
341
  $ cd pry-send_tweet.rb
@@ -2,11 +2,17 @@ class Pry
2
2
  module SendTweet
3
3
  #
4
4
  # @return [Integer]
5
- # The size of a line before word wrapping occurs.
5
+ # The default width of a box that contains a tweet or user.
6
6
  #
7
7
  # @api private
8
8
  #
9
- DEFAULT_LINE_WIDTH = 100
9
+ DEFAULT_BOX_WIDTH = 100
10
+
11
+ #
12
+ # @return [Integer]
13
+ # The default height of a box that contains a tweet or user.
14
+ #
15
+ DEFAULT_BOX_HEIGHT = 8
10
16
 
11
17
  #
12
18
  # @return [Integer]
@@ -18,6 +18,14 @@ class Pry::SendTweet::BaseCommand < Pry::ClassCommand
18
18
 
19
19
  private
20
20
 
21
+ def box_height
22
+ _pry_.config.twitter.box_height || Pry::SendTweet::DEFAULT_BOX_HEIGHT
23
+ end
24
+
25
+ def box_width
26
+ _pry_.config.twitter.box_width || Pry::SendTweet::DEFAULT_BOX_WIDTH
27
+ end
28
+
21
29
  def search_str_for_users(*ary)
22
30
  ary.map do |str|
23
31
  if str.start_with?('https://twitter.com')
@@ -46,10 +54,6 @@ class Pry::SendTweet::BaseCommand < Pry::ClassCommand
46
54
  "%-d %b %Y, %-I:%M:%S %p"
47
55
  end
48
56
 
49
- def line_width
50
- _pry_.config.twitter.line_width || Pry::SendTweet::DEFAULT_LINE_WIDTH
51
- end
52
-
53
57
  def twitter
54
58
  @twitter ||= _pry_.binding_stack[-1].eval('_twitter_')
55
59
  end
@@ -2,20 +2,12 @@ module Pry::SendTweet::TweetRenderer
2
2
  include Timeout
3
3
 
4
4
  def render_tweets(tweet_fetcher, title:, timeout: _pry_.config.twitter.refresh_interval)
5
- interval = __choose_render_interval(timeout)
6
5
  pid = nil
7
- timeout(interval) do
8
- pid = Kernel.fork do
9
- _pry_.pager.open do |pager|
10
- __trap_signal(pager)
11
- tweets = __fetch_tweets(tweet_fetcher)
12
- tweets.empty? ? pager.write("No tweets to show.") :
13
- pager.write(__render_tweets(title, tweets))
14
-
15
- end
16
- end
6
+ timeout(__choose_render_interval(timeout)) {
7
+ tweets = __fetch_tweets(tweet_fetcher)
8
+ pid = __fork_pager(tweets)
17
9
  Process.wait(pid)
18
- end
10
+ }
19
11
  rescue Interrupt
20
12
  __kill_pager!(pid)
21
13
  system 'reset'
@@ -26,6 +18,18 @@ module Pry::SendTweet::TweetRenderer
26
18
  end
27
19
 
28
20
  private
21
+ # @api private
22
+ def __fork_pager(tweets)
23
+ Kernel.fork do
24
+ _pry_.pager.open do |pager|
25
+ __trap_signal_in_fork(pager)
26
+ tweets.empty? ? pager.write("No tweets to show.") :
27
+ pager.write(__render_tweets("Twitter", tweets))
28
+
29
+ end
30
+ end
31
+ end
32
+
29
33
  # @api private
30
34
  def __render_tweets(title, tweets)
31
35
  title = bright_blue(bold((" " * 40) + title) + "\n\n")
@@ -35,8 +39,8 @@ module Pry::SendTweet::TweetRenderer
35
39
  # @api private
36
40
  def __render_tweet(tweet)
37
41
  contents = __get_tweet_contents(tweet)
38
- TTY::Box.frame(height: 7,
39
- width: line_width,
42
+ TTY::Box.frame(height: box_height,
43
+ width: box_width,
40
44
  title: {top_left: __render_tweet_title(tweet)}) do
41
45
  "#{tweet.url}\n--\n#{contents}\n"
42
46
  end.to_s
@@ -58,7 +62,7 @@ module Pry::SendTweet::TweetRenderer
58
62
  text = tweet.attrs[:full_text] ? tweet.attrs[:full_text] :
59
63
  tweet.full_text
60
64
  text = __tty_box_sanitize(CGI.unescapeHTML(text)).strip
61
- text.size == 0 || text == '.' ? "\n[ Outside ASCII charset ]\n" : text
65
+ text.size == 0 || text !~ /[a-z0-9]{1,}/i ? "\n[ Outside ASCII charset ]\n" : text
62
66
  end
63
67
 
64
68
  # @api private
@@ -71,6 +75,7 @@ module Pry::SendTweet::TweetRenderer
71
75
  end
72
76
  end
73
77
 
78
+ # @api private
74
79
  def __choose_render_interval(timeout)
75
80
  if timeout == false
76
81
  nil
@@ -82,13 +87,16 @@ module Pry::SendTweet::TweetRenderer
82
87
  # @api private
83
88
  def __kill_pager!(pid)
84
89
  Process.kill('SIGINT', pid)
90
+ Process.wait(pid) rescue nil
85
91
  end
86
92
 
87
93
  # @api private
88
- def __trap_signal(pager)
94
+ def __trap_signal_in_fork(pager)
89
95
  trap('SIGINT') {
90
- # SimplePager does not have a PID, ignore NoMethodError
91
- Process.kill('SIGKILL', pager.send(:pager).pid) rescue nil
96
+ if Pry::Pager::SystemPager === pager
97
+ syspager = pager.send(:pager)
98
+ Process.kill('SIGKILL', syspager.pid) rescue nil
99
+ end
92
100
  Process.kill('SIGKILL', Process.pid)
93
101
  }
94
102
  end
@@ -1,5 +1,5 @@
1
1
  class Pry
2
2
  module SendTweet
3
- VERSION = '0.10.0'
3
+ VERSION = '0.10.1'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pry-send_tweet.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Gleeson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-13 00:00:00.000000000 Z
11
+ date: 2019-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry