tty-reader 0.7.0 → 0.8.0

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: 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