tty-reader 0.7.0 → 0.8.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5cafac5b8e629299d317c79b4bc5ff9b5f88873dbbcb966b152a773509c118a8
4
- data.tar.gz: ebc42b1a9eb21652b74edf393f9555be025d9cfb3e84c9be14b667dc3012b59e
3
+ metadata.gz: 7f034dd9a1da1468f59ef2cf8c1ef164c5d85991d7aa0d9760eca05558d09978
4
+ data.tar.gz: '097df714a88a98b2352e202e69c7da48db124a8f637516449676a8647aee31f3'
5
5
  SHA512:
6
- metadata.gz: b7d0b5652ed3e3b7f6080c7a31c066457d00d20aefe780f2f581e221f06760a19bfe654c5d5b7edaa6317d2fed9f934a3a58adc36296e73b5529d74cf1147c92
7
- data.tar.gz: b713a61cf2c195d11ae63a4ccc4b0901347286913e41fa014d1bf641bc65e7ff958ba1e334354e7d8622848caf2229363a799402a240946042aec217e4ef1577
6
+ metadata.gz: 04cf6b1571693791baadf0f686f320393e17a0bd6b1a51aa61c28a34b20e65cb5a6efcca77a3ef21b0c4e2ff422ce3467cea3285b7c477783a5c91f3b1f08bde
7
+ data.tar.gz: ef5d9d50c2bad451a4cb326547e979a36bca173c0f02df90c202fc702823bd12c2bed8c47d0b47e16ccd6a9d1b644552d1ecea3f605629afaa0b975ac60d0b2b
@@ -1,5 +1,12 @@
1
1
  # Change log
2
2
 
3
+ ## [v0.8.0] - 2020-06-28
4
+
5
+ ### Changed
6
+ * Change gemspec to load version directly and remove test artefacts
7
+ * Change to update tty-screen dependency
8
+ * Change to remove bundler dev dependency and relax wisper version
9
+
3
10
  ## [v0.7.0] - 2019-11-24
4
11
 
5
12
  ### Added
@@ -66,6 +73,7 @@
66
73
 
67
74
  * Initial implementation and release
68
75
 
76
+ [v0.8.0]: https://github.com/piotrmurach/tty-reader/compare/v0.7.0...v0.8.0
69
77
  [v0.7.0]: https://github.com/piotrmurach/tty-reader/compare/v0.6.0...v0.7.0
70
78
  [v0.6.0]: https://github.com/piotrmurach/tty-reader/compare/v0.5.0...v0.6.0
71
79
  [v0.5.0]: https://github.com/piotrmurach/tty-reader/compare/v0.4.0...v0.5.0
data/README.md CHANGED
@@ -112,6 +112,7 @@ To read a single key stroke from the user use `read_char` or `read_keypress`:
112
112
  ```ruby
113
113
  reader.read_char
114
114
  reader.read_keypress
115
+ reader.read_keypress(nonblock: true)
115
116
  ```
116
117
 
117
118
  ### 2.2 read_line
@@ -1,15 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'tty-cursor'
4
- require 'tty-screen'
5
- require 'wisper'
3
+ require "tty-cursor"
4
+ require "tty-screen"
5
+ require "wisper"
6
6
 
7
- require_relative 'reader/history'
8
- require_relative 'reader/line'
9
- require_relative 'reader/key_event'
10
- require_relative 'reader/console'
11
- require_relative 'reader/win_console'
12
- require_relative 'reader/version'
7
+ require_relative "reader/history"
8
+ require_relative "reader/line"
9
+ require_relative "reader/key_event"
10
+ require_relative "reader/console"
11
+ require_relative "reader/win_console"
12
+ require_relative "reader/version"
13
13
 
14
14
  module TTY
15
15
  # A class responsible for reading character input from STDIN
@@ -31,7 +31,7 @@ module TTY
31
31
  #
32
32
  # @api public
33
33
  def self.windows?
34
- ::File::ALT_SEPARATOR == '\\'
34
+ ::File::ALT_SEPARATOR == "\\"
35
35
  end
36
36
 
37
37
  attr_reader :input
@@ -74,7 +74,7 @@ module TTY
74
74
 
75
75
  @track_history = options.fetch(:track_history) { true }
76
76
  @history_cycle = options.fetch(:history_cycle) { false }
77
- exclude_proc = ->(line) { line.strip == '' }
77
+ exclude_proc = ->(line) { line.strip == "" }
78
78
  @history_exclude = options.fetch(:history_exclude) { exclude_proc }
79
79
  @history_duplicates = options.fetch(:history_duplicates) { false }
80
80
 
@@ -131,7 +131,7 @@ module TTY
131
131
  #
132
132
  # @api private
133
133
  def select_console(input)
134
- if self.class.windows? && !env['TTY_TEST']
134
+ if self.class.windows? && !env["TTY_TEST"]
135
135
  WinConsole.new(input)
136
136
  else
137
137
  Console.new(input)
@@ -172,7 +172,7 @@ module TTY
172
172
  def read_keypress(options = {})
173
173
  opts = { echo: false, raw: true }.merge(options)
174
174
  codes = unbufferred { get_codes(opts) }
175
- char = codes ? codes.pack('U*') : nil
175
+ char = codes ? codes.pack("U*") : nil
176
176
 
177
177
  trigger_key_event(char) if char
178
178
  char
@@ -224,16 +224,16 @@ module TTY
224
224
  # @return [String]
225
225
  #
226
226
  # @api public
227
- def read_line(prompt = '', **options)
227
+ def read_line(prompt = "", **options)
228
228
  opts = { echo: true, raw: true }.merge(options)
229
- value = options.fetch(:value, '')
229
+ value = options.fetch(:value, "")
230
230
  line = Line.new(value, prompt: prompt)
231
231
  screen_width = TTY::Screen.width
232
232
 
233
233
  output.print(line)
234
234
 
235
235
  while (codes = get_codes(opts)) && (code = codes[0])
236
- char = codes.pack('U*')
236
+ char = codes.pack("U*")
237
237
 
238
238
  if [:ctrl_d, :ctrl_z].include?(console.keys[char])
239
239
  trigger_key_event(char, line: line.to_s)
@@ -256,7 +256,7 @@ module TTY
256
256
  elsif console.keys[char] == :up
257
257
  line.replace(history_previous) if history_previous?
258
258
  elsif console.keys[char] == :down
259
- line.replace(history_next? ? history_next : '')
259
+ line.replace(history_next? ? history_next : "")
260
260
  elsif console.keys[char] == :left
261
261
  line.left
262
262
  elsif console.keys[char] == :right
@@ -277,7 +277,7 @@ module TTY
277
277
  if opts[:raw]
278
278
  output.print("\e[1X") unless line.start?
279
279
  else
280
- output.print(?\s + (line.start? ? '' : ?\b))
280
+ output.print(?\s + (line.start? ? "" : ?\b))
281
281
  end
282
282
  end
283
283
 
@@ -362,7 +362,7 @@ module TTY
362
362
  lines = []
363
363
  loop do
364
364
  line = read_line(*args)
365
- break if !line || line == ''
365
+ break if !line || line == ""
366
366
  next if line !~ /\S/ && !@stop
367
367
  if block_given?
368
368
  yield(line) unless line.to_s.empty?
@@ -431,7 +431,7 @@ module TTY
431
431
  # @return [nil]
432
432
  #
433
433
  # @api private
434
- def trigger_key_event(char, line: '')
434
+ def trigger_key_event(char, line: "")
435
435
  event = KeyEvent.from(console.keys, char, line)
436
436
  trigger(:"key#{event.key.name}", event) if event.trigger?
437
437
  trigger(:keypress, event)
@@ -443,7 +443,7 @@ module TTY
443
443
  def handle_interrupt
444
444
  case @interrupt
445
445
  when :signal
446
- Process.kill('SIGINT', Process.pid)
446
+ Process.kill("SIGINT", Process.pid)
447
447
  when :exit
448
448
  exit(130)
449
449
  when Proc
@@ -1,15 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'io/wait'
3
+ require "io/wait"
4
4
 
5
- require_relative 'keys'
6
- require_relative 'mode'
5
+ require_relative "keys"
6
+ require_relative "mode"
7
7
 
8
8
  module TTY
9
9
  class Reader
10
10
  class Console
11
- ESC = "\e".freeze
12
- CSI = "\e[".freeze
11
+ ESC = "\e"
12
+ CSI = "\e["
13
13
 
14
14
  TIMEOUT = 0.1
15
15
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'forwardable'
3
+ require "forwardable"
4
4
 
5
5
  module TTY
6
6
  class Reader
@@ -121,7 +121,7 @@ module TTY
121
121
  end
122
122
  line = @history[index]
123
123
  if line.nil?
124
- raise IndexError, 'invalid index'
124
+ raise IndexError, "invalid index"
125
125
  end
126
126
  line.dup
127
127
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'keys'
3
+ require_relative "keys"
4
4
 
5
5
  module TTY
6
6
  class Reader
@@ -26,7 +26,7 @@ module TTY
26
26
  # @return [KeyEvent]
27
27
  #
28
28
  # @api public
29
- def self.from(keys, char, line = '')
29
+ def self.from(keys, char, line = "")
30
30
  key = Key.new
31
31
  key.name = (name = keys[char]) ? name : :ignore
32
32
 
@@ -13,12 +13,12 @@ module TTY
13
13
  ?\C-e => :ctrl_e,
14
14
  ?\C-f => :ctrl_f,
15
15
  ?\C-g => :ctrl_g,
16
- ?\C-h => :ctrl_h, # identical to '\b'
17
- ?\C-i => :ctrl_i, # identical to '\t'
18
- ?\C-j => :ctrl_j, # identical to '\n'
16
+ ?\C-h => :ctrl_h, # identical to "\b"
17
+ ?\C-i => :ctrl_i, # identical to "\t"
18
+ ?\C-j => :ctrl_j, # identical to "\n"
19
19
  ?\C-k => :ctrl_k,
20
20
  ?\C-l => :ctrl_l,
21
- ?\C-m => :ctrl_m, # identical to '\r'
21
+ ?\C-m => :ctrl_m, # identical to "\r"
22
22
  ?\C-n => :ctrl_n,
23
23
  ?\C-o => :ctrl_o,
24
24
  ?\C-p => :ctrl_p,
@@ -133,18 +133,18 @@ module TTY
133
133
  "\e" => :escape,
134
134
  " " => :space,
135
135
  "\b" => :backspace,
136
- [224, 71].pack('U*') => :home,
137
- [224, 79].pack('U*') => :end,
138
- [224, 82].pack('U*') => :insert,
139
- [224, 83].pack('U*') => :delete,
140
- [224, 73].pack('U*') => :page_up,
141
- [224, 81].pack('U*') => :page_down,
136
+ [224, 71].pack("U*") => :home,
137
+ [224, 79].pack("U*") => :end,
138
+ [224, 82].pack("U*") => :insert,
139
+ [224, 83].pack("U*") => :delete,
140
+ [224, 73].pack("U*") => :page_up,
141
+ [224, 81].pack("U*") => :page_down,
142
142
 
143
- [224, 72].pack('U*') => :up,
144
- [224, 80].pack('U*') => :down,
145
- [224, 77].pack('U*') => :right,
146
- [224, 75].pack('U*') => :left,
147
- [224, 83].pack('U*') => :clear,
143
+ [224, 72].pack("U*") => :up,
144
+ [224, 80].pack("U*") => :down,
145
+ [224, 77].pack("U*") => :right,
146
+ [224, 75].pack("U*") => :left,
147
+ [224, 83].pack("U*") => :clear,
148
148
 
149
149
  "\x00;" => :f1,
150
150
  "\x00<" => :f2,
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'forwardable'
3
+ require "forwardable"
4
4
 
5
5
  module TTY
6
6
  class Reader
@@ -15,7 +15,7 @@ module TTY
15
15
  #
16
16
  # @api public
17
17
  def self.sanitize(text)
18
- text.dup.gsub(ANSI_MATCHER, '')
18
+ text.dup.gsub(ANSI_MATCHER, "")
19
19
  end
20
20
 
21
21
  # The editable text
@@ -37,7 +37,7 @@ module TTY
37
37
  # Create a Line instance
38
38
  #
39
39
  # @api private
40
- def initialize(text = '', prompt: '')
40
+ def initialize(text = "", prompt: "")
41
41
  @prompt = prompt.dup
42
42
  @text = text.dup
43
43
  @cursor = [0, @text.length].max
@@ -138,9 +138,9 @@ module TTY
138
138
  # the characters to insert
139
139
  #
140
140
  # @example
141
- # text = 'aaa'
142
- # line[5]= 'b'
143
- # => 'aaa b'
141
+ # text = "aaa"
142
+ # line[5]= "b"
143
+ # => "aaa b"
144
144
  #
145
145
  # @api public
146
146
  def []=(i, chars)
@@ -153,7 +153,7 @@ module TTY
153
153
  end
154
154
 
155
155
  if i <= 0
156
- before_text = ''
156
+ before_text = ""
157
157
  after_text = @text.dup
158
158
  elsif i > @text.length - 1 # insert outside of line input
159
159
  before_text = @text.dup
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'io/console'
3
+ require "io/console"
4
4
 
5
5
  module TTY
6
6
  class Reader
@@ -2,6 +2,6 @@
2
2
 
3
3
  module TTY
4
4
  class Reader
5
- VERSION = '0.7.0'
5
+ VERSION = "0.8.0"
6
6
  end # Reader
7
7
  end # TTY
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fiddle'
3
+ require "fiddle"
4
4
 
5
5
  module TTY
6
6
  class Reader
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'keys'
3
+ require_relative "keys"
4
4
 
5
5
  module TTY
6
6
  class Reader
7
7
  class WinConsole
8
- ESC = "\e".freeze
9
- NUL_HEX = "\x00".freeze
10
- EXT_HEX = "\xE0".freeze
8
+ ESC = "\e"
9
+ NUL_HEX = "\x00"
10
+ EXT_HEX = "\xE0"
11
11
 
12
12
  # Key codes
13
13
  #
@@ -24,7 +24,7 @@ module TTY
24
24
  attr_reader :escape_codes
25
25
 
26
26
  def initialize(input)
27
- require_relative 'win_api'
27
+ require_relative "win_api"
28
28
  @input = input
29
29
  @keys = Keys.ctrl_keys.merge(Keys.win_keys)
30
30
  @escape_codes = [[NUL_HEX.ord], [ESC.ord], EXT_HEX.bytes.to_a]
metadata CHANGED
@@ -1,31 +1,31 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tty-reader
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Murach
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-24 00:00:00.000000000 Z
11
+ date: 2020-06-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: wisper
14
+ name: tty-screen
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.0.0
19
+ version: '0.8'
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: 2.0.0
26
+ version: '0.8'
27
27
  - !ruby/object:Gem::Dependency
28
- name: tty-screen
28
+ name: tty-cursor
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
@@ -39,33 +39,19 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0.7'
41
41
  - !ruby/object:Gem::Dependency
42
- name: tty-cursor
42
+ name: wisper
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.7'
47
+ version: '2.0'
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: '0.7'
55
- - !ruby/object:Gem::Dependency
56
- name: bundler
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: 1.5.0
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: 1.5.0
54
+ version: '2.0'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: rake
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -99,26 +85,17 @@ description: A set of methods for processing keyboard input in character, line a
99
85
  and re-edit those inputs. It lets you register to listen for keystroke events and
100
86
  trigger custom key events yourself.
101
87
  email:
102
- - me@piotrmurach.com
88
+ - piotr@piotrmurach.com
103
89
  executables: []
104
90
  extensions: []
105
- extra_rdoc_files: []
91
+ extra_rdoc_files:
92
+ - README.md
93
+ - CHANGELOG.md
94
+ - LICENSE.txt
106
95
  files:
107
96
  - CHANGELOG.md
108
97
  - LICENSE.txt
109
98
  - README.md
110
- - Rakefile
111
- - benchmarks/speed_read_char.rb
112
- - benchmarks/speed_read_line.rb
113
- - bin/console
114
- - bin/setup
115
- - examples/keypress.rb
116
- - examples/keypress_nonblock.rb
117
- - examples/line.rb
118
- - examples/multi_prompt.rb
119
- - examples/multiline.rb
120
- - examples/noecho.rb
121
- - examples/shell.rb
122
99
  - lib/tty-reader.rb
123
100
  - lib/tty/reader.rb
124
101
  - lib/tty/reader/console.rb
@@ -130,20 +107,7 @@ files:
130
107
  - lib/tty/reader/version.rb
131
108
  - lib/tty/reader/win_api.rb
132
109
  - lib/tty/reader/win_console.rb
133
- - spec/spec_helper.rb
134
- - spec/unit/history_spec.rb
135
- - spec/unit/key_event_spec.rb
136
- - spec/unit/line_spec.rb
137
- - spec/unit/publish_keypress_event_spec.rb
138
- - spec/unit/read_keypress_spec.rb
139
- - spec/unit/read_line_spec.rb
140
- - spec/unit/read_multiline_spec.rb
141
- - spec/unit/subscribe_spec.rb
142
- - tasks/console.rake
143
- - tasks/coverage.rake
144
- - tasks/spec.rake
145
- - tty-reader.gemspec
146
- homepage: https://piotrmurach.github.io/tty
110
+ homepage: https://ttytoolkit.org
147
111
  licenses:
148
112
  - MIT
149
113
  metadata:
@@ -151,7 +115,7 @@ metadata:
151
115
  bug_tracker_uri: https://github.com/piotrmurach/tty-reader/issues
152
116
  changelog_uri: https://github.com/piotrmurach/tty-reader/blob/master/CHANGELOG.md
153
117
  documentation_uri: https://www.rubydoc.info/gems/tty-reader
154
- homepage_uri: https://piotrmurach.github.io/tty
118
+ homepage_uri: https://ttytoolkit.org
155
119
  source_code_uri: https://github.com/piotrmurach/tty-reader
156
120
  post_install_message:
157
121
  rdoc_options: []
@@ -168,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
168
132
  - !ruby/object:Gem::Version
169
133
  version: '0'
170
134
  requirements: []
171
- rubygems_version: 3.0.6
135
+ rubygems_version: 3.1.2
172
136
  signing_key:
173
137
  specification_version: 4
174
138
  summary: A set of methods for processing keyboard input in character, line and multiline