mini_readline 0.8.1 → 0.9.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 +4 -4
- data/README.md +9 -37
- data/lib/mini_readline.rb +14 -10
- data/lib/mini_readline/exceptions.rb +0 -3
- data/lib/mini_readline/maps.rb +126 -0
- data/lib/mini_readline/options.rb +3 -7
- data/lib/mini_readline/read_line.rb +17 -25
- data/lib/mini_readline/read_line/edit.rb +10 -11
- data/lib/mini_readline/read_line/edit/auto_complete.rb +7 -7
- data/lib/mini_readline/read_line/edit/auto_complete/array_source.rb +7 -7
- data/lib/mini_readline/read_line/edit/auto_complete/auto_file_source.rb +19 -19
- data/lib/mini_readline/read_line/edit/auto_complete/auto_manager.rb +5 -5
- data/lib/mini_readline/read_line/edit/auto_complete/file_folder_source.rb +6 -6
- data/lib/mini_readline/read_line/edit/auto_complete/quoted_file_folder_source.rb +7 -7
- data/lib/mini_readline/read_line/edit/cancel.rb +3 -3
- data/lib/mini_readline/read_line/edit/delete_all_left.rb +4 -4
- data/lib/mini_readline/read_line/edit/delete_all_right.rb +4 -4
- data/lib/mini_readline/read_line/edit/delete_left.rb +4 -4
- data/lib/mini_readline/read_line/edit/delete_right.rb +4 -4
- data/lib/mini_readline/read_line/edit/edit_window.rb +17 -19
- data/lib/mini_readline/read_line/edit/edit_window/sync_cursor.rb +4 -4
- data/lib/mini_readline/read_line/edit/edit_window/sync_window.rb +9 -9
- data/lib/mini_readline/read_line/edit/end_of_input.rb +4 -4
- data/lib/mini_readline/read_line/edit/enter.rb +3 -3
- data/lib/mini_readline/read_line/edit/go_end.rb +3 -3
- data/lib/mini_readline/read_line/edit/go_home.rb +3 -3
- data/lib/mini_readline/read_line/edit/go_left.rb +4 -4
- data/lib/mini_readline/read_line/edit/go_right.rb +4 -4
- data/lib/mini_readline/read_line/edit/insert_text.rb +3 -3
- data/lib/mini_readline/read_line/edit/next_history.rb +4 -4
- data/lib/mini_readline/read_line/edit/previous_history.rb +4 -4
- data/lib/mini_readline/read_line/edit/unmapped.rb +4 -4
- data/lib/mini_readline/read_line/edit/word_left.rb +4 -4
- data/lib/mini_readline/read_line/edit/word_right.rb +4 -4
- data/lib/mini_readline/read_line/history.rb +9 -9
- data/lib/mini_readline/read_line/no_history.rb +8 -8
- data/lib/mini_readline/read_line/prompt.rb +7 -7
- data/lib/mini_readline/version.rb +7 -1
- data/mini_readline.gemspec +5 -4
- data/rakefile.rb +8 -23
- data/sire.rb +1 -1
- data/tests/mini_readline_tests.rb +13 -14
- metadata +23 -34
- data/lib/mini_readline/raw_term.rb +0 -47
- data/lib/mini_readline/raw_term/ansi.rb +0 -70
- data/lib/mini_readline/raw_term/ansi/map.rb +0 -68
- data/lib/mini_readline/raw_term/ansi/set_posn.rb +0 -22
- data/lib/mini_readline/raw_term/ansi/window_width.rb +0 -17
- data/lib/mini_readline/raw_term/mapped_term.rb +0 -23
- data/lib/mini_readline/raw_term/mapped_term/mapper.rb +0 -53
- data/lib/mini_readline/raw_term/windows.rb +0 -100
- data/lib/mini_readline/raw_term/windows/map.rb +0 -63
- data/lib/mini_readline/raw_term/windows/set_posn.rb +0 -19
- data/lib/mini_readline/raw_term/windows/win_32_api.rb +0 -31
- data/lib/mini_readline/raw_term/windows/window_width.rb +0 -17
@@ -1,4 +1,10 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
# Version info for the gem.
|
1
4
|
module MiniReadline
|
2
5
|
#The current version of the mini_readline gem.
|
3
|
-
VERSION = "0.
|
6
|
+
VERSION = "0.9.0".freeze
|
7
|
+
|
8
|
+
# A brief description.
|
9
|
+
DESCRIPTION = "Get console input with edit, history, and auto-complete.".freeze
|
4
10
|
end
|
data/mini_readline.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = ["Peter Camilleri"]
|
10
10
|
spec.email = ["peter.c.camilleri@gmail.com"]
|
11
11
|
|
12
|
-
spec.summary = "
|
12
|
+
spec.summary = "Get console input with edit, history, and auto-complete."
|
13
13
|
spec.description = %{A gem, for console command entry with line edit and
|
14
14
|
history, inspired by the standard readline gem. Also
|
15
15
|
included are four sample auto-complete agents and the
|
@@ -25,13 +25,14 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
26
26
|
spec.require_paths = ["lib"]
|
27
27
|
|
28
|
-
spec.required_ruby_version = '>=
|
28
|
+
spec.required_ruby_version = '>= 2.0'
|
29
|
+
|
30
|
+
spec.add_runtime_dependency 'mini_term', "~> 0.1.0"
|
29
31
|
|
30
32
|
spec.add_development_dependency "rake", "~> 12.0"
|
31
33
|
spec.add_development_dependency "bundler", "~> 1.11"
|
32
34
|
spec.add_development_dependency 'minitest', "~> 5.7"
|
33
35
|
spec.add_development_dependency 'minitest_visible', "~> 0.1"
|
34
|
-
spec.add_development_dependency '
|
35
|
-
spec.add_development_dependency 'reek', "~> 4.5"
|
36
|
+
spec.add_development_dependency 'reek', ">= 5.0.2"
|
36
37
|
|
37
38
|
end
|
data/rakefile.rb
CHANGED
@@ -2,25 +2,8 @@
|
|
2
2
|
# coding: utf-8
|
3
3
|
|
4
4
|
require 'rake/testtask'
|
5
|
-
require 'rdoc/task'
|
6
5
|
require "bundler/gem_tasks"
|
7
6
|
|
8
|
-
#Generate internal documentation with rdoc.
|
9
|
-
RDoc::Task.new do |rdoc|
|
10
|
-
rdoc.rdoc_dir = "rdoc"
|
11
|
-
|
12
|
-
#List out all the files to be documented.
|
13
|
-
rdoc.rdoc_files.include("lib/**/*.rb", "license.txt")
|
14
|
-
|
15
|
-
#Make all access levels visible.
|
16
|
-
rdoc.options << '--visibility' << 'private'
|
17
|
-
#rdoc.options << '--verbose'
|
18
|
-
#rdoc.options << '--coverage-report'
|
19
|
-
|
20
|
-
#Set a title.
|
21
|
-
rdoc.options << '--title' << 'Mini Readline Gem'
|
22
|
-
end
|
23
|
-
|
24
7
|
#Run the mini_readline unit test suite.
|
25
8
|
Rake::TestTask.new do |t|
|
26
9
|
#List out all the test files.
|
@@ -44,11 +27,13 @@ task :vers do |t|
|
|
44
27
|
puts "mini_readline version = #{MiniReadline::VERSION}"
|
45
28
|
end
|
46
29
|
|
47
|
-
desc "
|
48
|
-
task :
|
49
|
-
|
30
|
+
desc "Alternative test procedure."
|
31
|
+
task :alt_test do |t, args|
|
32
|
+
here = File.dirname(__FILE__)
|
33
|
+
target = "#{here}/tests/*.rb"
|
50
34
|
|
51
|
-
|
52
|
-
|
53
|
-
end
|
35
|
+
block = "{|file| require file if File.basename(file) =~ /test/}"
|
36
|
+
code = "Dir['#{target}'].each #{block}"
|
54
37
|
|
38
|
+
system "ruby -e\"#{code}\""
|
39
|
+
end
|
data/sire.rb
CHANGED
@@ -11,6 +11,19 @@ class MiniReadlineTester < Minitest::Test
|
|
11
11
|
#Track mini-test progress.
|
12
12
|
include MinitestVisible
|
13
13
|
|
14
|
+
def test_that_it_has_a_version_number
|
15
|
+
refute_nil ::MiniReadline::VERSION
|
16
|
+
assert(::MiniReadline::VERSION.frozen?)
|
17
|
+
assert(::MiniReadline::VERSION.is_a?(String))
|
18
|
+
assert(/\A\d+\.\d+\.\d+/ =~ ::MiniReadline::VERSION)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_that_it_has_a_description
|
22
|
+
refute_nil ::MiniReadline::DESCRIPTION
|
23
|
+
assert(::MiniReadline::DESCRIPTION.frozen?)
|
24
|
+
assert(::MiniReadline::DESCRIPTION.is_a?(String))
|
25
|
+
end
|
26
|
+
|
14
27
|
def test_that_module_entities_exists
|
15
28
|
assert_equal(Module, MiniReadline.class)
|
16
29
|
assert_equal(String, MiniReadline::VERSION.class)
|
@@ -24,20 +37,6 @@ class MiniReadlineTester < Minitest::Test
|
|
24
37
|
refute_equal(MiniReadline::BASE_OPTIONS, edit.instance_options)
|
25
38
|
end
|
26
39
|
|
27
|
-
def test_mapper_checking
|
28
|
-
MiniReadline::RawTerm::MAP["\xC0test"] = [:go_left]
|
29
|
-
|
30
|
-
assert_raises(MiniReadlineKME) { MiniReadline::RawTerm::MAP["\xC0t"] = [:go_left] }
|
31
|
-
assert_raises(MiniReadlineKME) { MiniReadline::RawTerm::MAP["\xC0test"] = [:go_left] }
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_platform_detection
|
35
|
-
if (MiniReadline::TERM_PLATFORM == :windows)
|
36
|
-
assert_equal(:windows, MiniReadline::PLATFORM)
|
37
|
-
else
|
38
|
-
assert_equal(:other, MiniReadline::PLATFORM)
|
39
|
-
end
|
40
|
-
end
|
41
40
|
|
42
41
|
def test_reading_a_line
|
43
42
|
puts
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mini_readline
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Camilleri
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-11-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: mini_term
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.1.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.1.0
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: rake
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,34 +80,20 @@ dependencies:
|
|
66
80
|
- - "~>"
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '0.1'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rdoc
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '5.0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '5.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: reek
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: 5.0.2
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
96
|
+
version: 5.0.2
|
97
97
|
description: A gem, for console command entry with line edit and history, inspired
|
98
98
|
by the standard readline gem. Also included are four sample auto-complete agents
|
99
99
|
and the irbm utility, which is irb + mini_readline and not an Intermediate Range
|
@@ -114,19 +114,8 @@ files:
|
|
114
114
|
- irbt.rb
|
115
115
|
- lib/mini_readline.rb
|
116
116
|
- lib/mini_readline/exceptions.rb
|
117
|
+
- lib/mini_readline/maps.rb
|
117
118
|
- lib/mini_readline/options.rb
|
118
|
-
- lib/mini_readline/raw_term.rb
|
119
|
-
- lib/mini_readline/raw_term/ansi.rb
|
120
|
-
- lib/mini_readline/raw_term/ansi/map.rb
|
121
|
-
- lib/mini_readline/raw_term/ansi/set_posn.rb
|
122
|
-
- lib/mini_readline/raw_term/ansi/window_width.rb
|
123
|
-
- lib/mini_readline/raw_term/mapped_term.rb
|
124
|
-
- lib/mini_readline/raw_term/mapped_term/mapper.rb
|
125
|
-
- lib/mini_readline/raw_term/windows.rb
|
126
|
-
- lib/mini_readline/raw_term/windows/map.rb
|
127
|
-
- lib/mini_readline/raw_term/windows/set_posn.rb
|
128
|
-
- lib/mini_readline/raw_term/windows/win_32_api.rb
|
129
|
-
- lib/mini_readline/raw_term/windows/window_width.rb
|
130
119
|
- lib/mini_readline/read_line.rb
|
131
120
|
- lib/mini_readline/read_line/edit.rb
|
132
121
|
- lib/mini_readline/read_line/edit/auto_complete.rb
|
@@ -177,7 +166,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
177
166
|
requirements:
|
178
167
|
- - ">="
|
179
168
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
169
|
+
version: '2.0'
|
181
170
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
182
171
|
requirements:
|
183
172
|
- - ">="
|
@@ -188,5 +177,5 @@ rubyforge_project:
|
|
188
177
|
rubygems_version: 2.5.2
|
189
178
|
signing_key:
|
190
179
|
specification_version: 4
|
191
|
-
summary:
|
180
|
+
summary: Get console input with edit, history, and auto-complete.
|
192
181
|
test_files: []
|
@@ -1,47 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
require 'rbconfig'
|
4
|
-
|
5
|
-
#* raw_term.rb - Platform determination for raw terminal access.
|
6
|
-
module MiniReadline
|
7
|
-
|
8
|
-
# :stopdoc:
|
9
|
-
host_os = RbConfig::CONFIG['host_os']
|
10
|
-
# :startdoc:
|
11
|
-
|
12
|
-
#What operating platform is in effect?
|
13
|
-
TERM_PLATFORM =
|
14
|
-
case host_os
|
15
|
-
when /mswin|msys|mingw|bccwin|wince|emc/
|
16
|
-
:windows
|
17
|
-
when /cygwin/
|
18
|
-
:cygwin
|
19
|
-
when /darwin|mac os/
|
20
|
-
:macosx
|
21
|
-
when /linux/
|
22
|
-
:linux
|
23
|
-
when /solaris|bsd/
|
24
|
-
:unix
|
25
|
-
else
|
26
|
-
raise "Unknown os: #{host_os.inspect}"
|
27
|
-
end
|
28
|
-
|
29
|
-
#Is Java present in the environment?
|
30
|
-
TERM_JAVA = RUBY_PLATFORM =~ /java/
|
31
|
-
|
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
|
-
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|
@@ -1,70 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
require 'io/console'
|
4
|
-
|
5
|
-
require_relative 'mapped_term'
|
6
|
-
require_relative 'ansi/map'
|
7
|
-
require_relative 'ansi/set_posn'
|
8
|
-
require_relative 'ansi/window_width'
|
9
|
-
|
10
|
-
#* raw_term/ansi.rb - Support for raw terminal access in non-windows systems.
|
11
|
-
module MiniReadline
|
12
|
-
|
13
|
-
#The detected platform is not windows.
|
14
|
-
PLATFORM = :ansi
|
15
|
-
|
16
|
-
#The class used to manipulate console i/o on a low level.
|
17
|
-
class RawTerm
|
18
|
-
|
19
|
-
CARRIAGE_RETURN = "\x0D"
|
20
|
-
BELL = "\x07"
|
21
|
-
|
22
|
-
#Output a string
|
23
|
-
def put_string(str)
|
24
|
-
scan_string(str)
|
25
|
-
STDOUT.print(str)
|
26
|
-
end
|
27
|
-
|
28
|
-
#Home the cursor and start at a known state.
|
29
|
-
def initialize_parms
|
30
|
-
put_string CARRIAGE_RETURN
|
31
|
-
STDIN.raw!
|
32
|
-
end
|
33
|
-
|
34
|
-
#Conclude the terminal state.
|
35
|
-
#<br>Endemic Code Smells
|
36
|
-
#* :reek:UtilityFunction
|
37
|
-
def conclude
|
38
|
-
STDIN.cooked!
|
39
|
-
STDOUT.print("\n")
|
40
|
-
end
|
41
|
-
|
42
|
-
#Sound a beep
|
43
|
-
#<br>Endemic Code Smells
|
44
|
-
#* :reek:UtilityFunction
|
45
|
-
def beep
|
46
|
-
STDERR.write(BELL)
|
47
|
-
STDERR.flush
|
48
|
-
end
|
49
|
-
|
50
|
-
#Get a uncooked character keystroke.
|
51
|
-
#<br>Notes
|
52
|
-
#* This needs to be tested under Linux, Cygwin, and Apple.
|
53
|
-
#<br>Endemic Code Smells
|
54
|
-
#* :reek:UtilityFunction -- For now, the way things are.
|
55
|
-
def get_raw_char
|
56
|
-
STDIN.getch
|
57
|
-
end
|
58
|
-
|
59
|
-
#Determine the affect of a string on the cursor.
|
60
|
-
def scan_string(str)
|
61
|
-
str.chars.each do |char|
|
62
|
-
if char == CARRIAGE_RETURN
|
63
|
-
@cursor_posn = 0
|
64
|
-
else
|
65
|
-
@cursor_posn += 1
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
@@ -1,68 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
#* other/map.rb - Character mapping for other systems.
|
4
|
-
module MiniReadline
|
5
|
-
|
6
|
-
#* other/map.rb - Character mapping for other systems.
|
7
|
-
class RawTerm
|
8
|
-
|
9
|
-
#Map the non-printing characters.
|
10
|
-
|
11
|
-
#Left Arrows
|
12
|
-
MAP["\e[D"] = [:go_left]
|
13
|
-
MAP["\eOD"] = [:go_left]
|
14
|
-
MAP["\x02"] = [:go_left]
|
15
|
-
|
16
|
-
MAP["\e[1;5D"] = [:word_left]
|
17
|
-
MAP["\eb"] = [:word_left]
|
18
|
-
|
19
|
-
#Right Arrows
|
20
|
-
MAP["\e[C"] = [:go_right]
|
21
|
-
MAP["\eOC"] = [:go_right]
|
22
|
-
MAP["\x06"] = [:go_right]
|
23
|
-
|
24
|
-
MAP["\e[1;5C"] = [:word_right]
|
25
|
-
MAP["\ef"] = [:word_right]
|
26
|
-
|
27
|
-
#Up Arrows
|
28
|
-
MAP["\e[A"] = [:previous_history]
|
29
|
-
MAP["\eOA"] = [:previous_history]
|
30
|
-
MAP["\x12"] = [:previous_history]
|
31
|
-
|
32
|
-
#Down Arrows
|
33
|
-
MAP["\e[B"] = [:next_history]
|
34
|
-
MAP["\eOB"] = [:next_history]
|
35
|
-
|
36
|
-
#The Home keys
|
37
|
-
MAP["\e[H"] = [:go_home]
|
38
|
-
MAP["\eOH"] = [:go_home]
|
39
|
-
MAP["\x01"] = [:go_home]
|
40
|
-
|
41
|
-
#The End keys
|
42
|
-
MAP["\e[F"] = [:go_end]
|
43
|
-
MAP["\eOF"] = [:go_end]
|
44
|
-
MAP["\x05"] = [:go_end]
|
45
|
-
|
46
|
-
#The Backspace key
|
47
|
-
MAP["\x7F"] = [:delete_left]
|
48
|
-
MAP["\x08"] = [:delete_left]
|
49
|
-
MAP["\x15"] = [:delete_all_left]
|
50
|
-
|
51
|
-
#The Delete keys
|
52
|
-
MAP["\x1F"] = [:delete_right]
|
53
|
-
MAP["\e[3~"] = [:delete_right]
|
54
|
-
MAP["\x0B"] = [:delete_all_right]
|
55
|
-
|
56
|
-
#Auto-completion.
|
57
|
-
MAP["\t"] = [:auto_complete]
|
58
|
-
|
59
|
-
#The Enter key
|
60
|
-
MAP["\x0D"] = [:enter]
|
61
|
-
|
62
|
-
#The Cancel key
|
63
|
-
MAP["\f"] = [:cancel]
|
64
|
-
|
65
|
-
#End of Input
|
66
|
-
MAP["\ez"] = [:end_of_input]
|
67
|
-
end
|
68
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
#* windows/set_posn.rb - Set the column of the cursor.
|
4
|
-
module MiniReadline
|
5
|
-
|
6
|
-
#* windows/set_posn.rb - Set the column of the cursor.
|
7
|
-
class RawTerm
|
8
|
-
|
9
|
-
#Move the cursor using terminal primitives.
|
10
|
-
def set_posn(new_posn)
|
11
|
-
if new_posn == 0
|
12
|
-
put_string(CARRIAGE_RETURN)
|
13
|
-
elsif new_posn > @cursor_posn
|
14
|
-
STDOUT.print("\e[#{new_posn - @cursor_posn}C")
|
15
|
-
elsif new_posn < @cursor_posn
|
16
|
-
STDOUT.print("\e[#{@cursor_posn - new_posn}D")
|
17
|
-
end
|
18
|
-
|
19
|
-
@cursor_posn = new_posn
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|