pry-send_tweet.rb 0.10.0 → 0.10.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
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