mini_readline 0.7.1 → 0.7.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +11 -5
- data/lib/mini_readline/options.rb +1 -2
- data/lib/mini_readline/raw_term.rb +13 -7
- data/lib/mini_readline/raw_term/ansi.rb +2 -1
- data/lib/mini_readline/raw_term/ansi/window_width.rb +17 -0
- data/lib/mini_readline/raw_term/windows.rb +2 -1
- data/lib/mini_readline/raw_term/windows/window_width.rb +17 -0
- data/lib/mini_readline/read_line.rb +6 -2
- data/lib/mini_readline/read_line/edit/unmapped.rb +1 -1
- data/lib/mini_readline/version.rb +1 -1
- data/mini_readline.gemspec +1 -1
- data/mini_readline.reek +3 -0
- data/tests/mini_readline_tests.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c95e47d89d4da95acdbd7f8e0ae7008012bf1066
|
4
|
+
data.tar.gz: 4c3e1c916492b4c31aaab3edc1e4a15c6dfc4fbc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a3d3c236b0853b86719e628d4627420bfe89fa7ebd02c38dda626a9df1d3b4fad37a779230819593e0b1291c60456fb8a95f0d5eb291778513d76c2e6c5a0ac7
|
7
|
+
data.tar.gz: f90214f1d610e02ce7dc28859654c6ca97b2e67cb0dfc6e62c76a18f1a121834b593d4f42ff1cc6a48898aa2dc69998fe5891acdbe4b1a65842f3bf59aa075bd
|
data/README.md
CHANGED
@@ -73,7 +73,7 @@ There are a number of demo/test programs available for the mini_readline gem.
|
|
73
73
|
These are:
|
74
74
|
|
75
75
|
$ irbm
|
76
|
-
Starting an IRB console with mini_readline.
|
76
|
+
Starting an IRB console with mini_readline (0.7.2).
|
77
77
|
irb(main):001:0>
|
78
78
|
|
79
79
|
This runs against the most recently installed gem. Also available in the gem
|
@@ -201,8 +201,7 @@ entries.
|
|
201
201
|
<br>The available options are described below:
|
202
202
|
```ruby
|
203
203
|
BASE_OPTIONS = {
|
204
|
-
:
|
205
|
-
:scroll_step => 12, #The amount scrolled.
|
204
|
+
:scroll_step => 12, #The amount horizontally scrolled.
|
206
205
|
|
207
206
|
:prompt => ">", #The default prompt.
|
208
207
|
:alt_prompt => "<< ", #The prompt when scrolled.
|
@@ -265,6 +264,10 @@ further actions on the part of the user. The terminal support class can be
|
|
265
264
|
changed, to a user supplied class, to get data from another source, such as
|
266
265
|
a serial attached terminal.
|
267
266
|
|
267
|
+
Finally the :window_width option is now ignored. Screen width now automatically
|
268
|
+
determined.
|
269
|
+
|
270
|
+
|
268
271
|
#### Notes
|
269
272
|
* Since the compatibility mode does not accept an options hash, the only way to
|
270
273
|
affect options in this case is to modify the MiniReadline::BASE_OPTIONS hash.
|
@@ -352,6 +355,9 @@ options.
|
|
352
355
|
statement to permit the use of clearer, easier to read access to regular
|
353
356
|
expression results.
|
354
357
|
|
358
|
+
<br> An example of a custom auto-complete facility may be found in the mysh
|
359
|
+
gem located at: https://github.com/PeterCamilleri/mysh/blob/master/lib/mysh/user_input/smart_source.rb
|
360
|
+
|
355
361
|
### Important Security Note
|
356
362
|
|
357
363
|
It must be remembered that any time strings are passed to the command line
|
@@ -417,13 +423,13 @@ Ruby | Win32 | Win64 | Cygwin | Linux | Mac
|
|
417
423
|
ruby 1.9.3p484 | Yes | Yes | ? | ? | ?
|
418
424
|
ruby 2.1.6p336 | Yes | ? | ? | ? | ?
|
419
425
|
ruby 2.2.3p173 | ? | ? | Yes | ? | ?
|
420
|
-
jruby 9.1.5.0 |
|
426
|
+
jruby 9.1.5.0 | Mostly | ? | Planned | Planned | Planned
|
421
427
|
rubinius | N/A | N/A | N/A | Maybe | Maybe
|
422
428
|
|
423
429
|
<br>Where:
|
424
430
|
|
425
431
|
* 'Yes' means good to go! Coded and tested OK!
|
426
|
-
* '
|
432
|
+
* 'Mostly' is mostly working but still some minor issues (See issue #7).
|
427
433
|
* '?' _should_ work but are untested.
|
428
434
|
* 'Planned' are not there yet and some work and much testing are needed.
|
429
435
|
* 'N/A' entries reflect the fact that Rubinius does not run under Windows.
|
@@ -4,8 +4,7 @@
|
|
4
4
|
module MiniReadline
|
5
5
|
|
6
6
|
#The base options shared by all instances.
|
7
|
-
BASE_OPTIONS = {:
|
8
|
-
:scroll_step => 12, #The amount scrolled.
|
7
|
+
BASE_OPTIONS = {:scroll_step => 12, #The amount scrolled.
|
9
8
|
|
10
9
|
:prompt => ">", #The default prompt.
|
11
10
|
:alt_prompt => "<< ", #The prompt when scrolled.
|
@@ -29,13 +29,19 @@ module MiniReadline
|
|
29
29
|
#Is Java present in the environment?
|
30
30
|
TERM_JAVA = RUBY_PLATFORM =~ /java/
|
31
31
|
|
32
|
-
#
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
32
|
+
#Only install a terminal if one is not already provided.
|
33
|
+
unless BASE_OPTIONS[:term]
|
34
|
+
|
35
|
+
#Select the type of platform in use.
|
36
|
+
if TERM_PLATFORM == :windows
|
37
|
+
require_relative 'raw_term/windows'
|
38
|
+
else
|
39
|
+
require_relative 'raw_term/ansi'
|
40
|
+
end
|
41
|
+
|
42
|
+
#Get an instance of a raw terminal controller object.
|
43
|
+
BASE_OPTIONS[:term] = RawTerm.new
|
44
|
+
|
37
45
|
end
|
38
46
|
|
39
|
-
#Get an instance of a raw terminal controller object.
|
40
|
-
BASE_OPTIONS[:term] = RawTerm.new
|
41
47
|
end
|
@@ -5,8 +5,9 @@ require 'io/console'
|
|
5
5
|
require_relative 'mapped_term'
|
6
6
|
require_relative 'ansi/map'
|
7
7
|
require_relative 'ansi/set_posn'
|
8
|
+
require_relative 'ansi/window_width'
|
8
9
|
|
9
|
-
#* raw_term/
|
10
|
+
#* raw_term/ansi.rb - Support for raw terminal access in non-windows systems.
|
10
11
|
module MiniReadline
|
11
12
|
|
12
13
|
#The detected platform is not windows.
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
#* ansi/window_width.rb - Determine the available screen width.
|
4
|
+
module MiniReadline
|
5
|
+
|
6
|
+
#* ansi/window_width.rb - Determine the available screen width.
|
7
|
+
class RawTerm
|
8
|
+
|
9
|
+
#Determine the available screen width.
|
10
|
+
#<br>Endemic Code Smells
|
11
|
+
#* :reek:UtilityFunction
|
12
|
+
def window_width
|
13
|
+
IO.console.winsize[1]
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -9,6 +9,7 @@ end
|
|
9
9
|
require_relative 'mapped_term'
|
10
10
|
require_relative 'windows/map'
|
11
11
|
require_relative 'windows/set_posn'
|
12
|
+
require_relative 'windows/window_width'
|
12
13
|
|
13
14
|
#* raw_term/windows.rb - Support for raw terminal access in windows systems.
|
14
15
|
module MiniReadline
|
@@ -44,7 +45,7 @@ module MiniReadline
|
|
44
45
|
define_singleton_method(:kbhit) { kbhit_proc.call }
|
45
46
|
|
46
47
|
beep_proc = Win32API.new("user32", "MessageBeep", ['L'], '0')
|
47
|
-
define_singleton_method(:beep) { beep_proc.call }
|
48
|
+
define_singleton_method(:beep) { beep_proc.call(0) }
|
48
49
|
|
49
50
|
set_cursor_posn_proc = Win32API.new("kernel32",
|
50
51
|
"SetConsoleCursorPosition",
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
#* windows/window_width.rb - Determine the available screen width.
|
4
|
+
module MiniReadline
|
5
|
+
|
6
|
+
#* windows/window_width.rb - Determine the available screen width.
|
7
|
+
class RawTerm
|
8
|
+
|
9
|
+
#Determine the available screen width.
|
10
|
+
def window_width
|
11
|
+
raw_buffer = 0.chr * 24
|
12
|
+
get_screen_info(raw_buffer)
|
13
|
+
(raw_buffer[0,2].unpack('S'))[0]
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -58,9 +58,13 @@ module MiniReadline
|
|
58
58
|
|
59
59
|
#Set up the options
|
60
60
|
def set_options(options)
|
61
|
-
@options = MiniReadline::BASE_OPTIONS
|
62
|
-
|
61
|
+
@options = MiniReadline::BASE_OPTIONS
|
62
|
+
.merge(instance_options)
|
63
|
+
.merge(options)
|
64
|
+
|
63
65
|
(@term = @options[:term]).initialize_parms
|
66
|
+
|
67
|
+
@options[:window_width] = @term.window_width - 1
|
64
68
|
set_prompt(@options[:prompt])
|
65
69
|
verify_mask(@options[:secret_mask])
|
66
70
|
end
|
data/mini_readline.gemspec
CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
|
|
17
17
|
Intermediate Range Ballistic Missile.
|
18
18
|
}.gsub(/\s+/, ' ').strip
|
19
19
|
|
20
|
-
spec.homepage = "
|
20
|
+
spec.homepage = "https://github.com/PeterCamilleri/mini_readline"
|
21
21
|
spec.license = "MIT"
|
22
22
|
|
23
23
|
spec.files = `git ls-files`.split($/)
|
data/mini_readline.reek
CHANGED
@@ -193,7 +193,7 @@ class MiniReadlineTester < Minitest::Test
|
|
193
193
|
end
|
194
194
|
|
195
195
|
def test_prompt_verification
|
196
|
-
opts = {prompt: ">"*
|
196
|
+
opts = {prompt: ">"*70}
|
197
197
|
edit = MiniReadline::Readline.new()
|
198
198
|
assert_raises(RuntimeError) {edit.readline(opts)}
|
199
199
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mini_readline
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Camilleri
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -91,12 +91,14 @@ files:
|
|
91
91
|
- lib/mini_readline/raw_term/ansi.rb
|
92
92
|
- lib/mini_readline/raw_term/ansi/map.rb
|
93
93
|
- lib/mini_readline/raw_term/ansi/set_posn.rb
|
94
|
+
- lib/mini_readline/raw_term/ansi/window_width.rb
|
94
95
|
- lib/mini_readline/raw_term/mapped_term.rb
|
95
96
|
- lib/mini_readline/raw_term/mapped_term/mapper.rb
|
96
97
|
- lib/mini_readline/raw_term/windows.rb
|
97
98
|
- lib/mini_readline/raw_term/windows/map.rb
|
98
99
|
- lib/mini_readline/raw_term/windows/set_posn.rb
|
99
100
|
- lib/mini_readline/raw_term/windows/win_32_api.rb
|
101
|
+
- lib/mini_readline/raw_term/windows/window_width.rb
|
100
102
|
- lib/mini_readline/read_line.rb
|
101
103
|
- lib/mini_readline/read_line/edit.rb
|
102
104
|
- lib/mini_readline/read_line/edit/auto_complete.rb
|
@@ -135,7 +137,7 @@ files:
|
|
135
137
|
- reek.txt
|
136
138
|
- sire.rb
|
137
139
|
- tests/mini_readline_tests.rb
|
138
|
-
homepage:
|
140
|
+
homepage: https://github.com/PeterCamilleri/mini_readline
|
139
141
|
licenses:
|
140
142
|
- MIT
|
141
143
|
metadata: {}
|