mini_readline 0.7.1 → 0.7.2
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 +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: {}
|