mini_readline 0.0.1
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 +7 -0
- data/.gitignore +15 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +207 -0
- data/Rakefile +40 -0
- data/lib/mini_readline.rb +28 -0
- data/lib/mini_readline/options.rb +19 -0
- data/lib/mini_readline/raw_term.rb +14 -0
- data/lib/mini_readline/raw_term/other.rb +67 -0
- data/lib/mini_readline/raw_term/other/map.rb +75 -0
- data/lib/mini_readline/raw_term/other/set_posn.rb +22 -0
- data/lib/mini_readline/raw_term/windows.rb +88 -0
- data/lib/mini_readline/raw_term/windows/map.rb +71 -0
- data/lib/mini_readline/raw_term/windows/set_posn.rb +40 -0
- data/lib/mini_readline/raw_term/windows/win_32_api.rb +47 -0
- data/lib/mini_readline/read_line.rb +65 -0
- data/lib/mini_readline/read_line/edit.rb +87 -0
- data/lib/mini_readline/read_line/edit/cancel.rb +15 -0
- data/lib/mini_readline/read_line/edit/delete_left.rb +21 -0
- data/lib/mini_readline/read_line/edit/delete_right.rb +19 -0
- data/lib/mini_readline/read_line/edit/enter.rb +14 -0
- data/lib/mini_readline/read_line/edit/go_end.rb +14 -0
- data/lib/mini_readline/read_line/edit/go_home.rb +14 -0
- data/lib/mini_readline/read_line/edit/go_left.rb +18 -0
- data/lib/mini_readline/read_line/edit/go_right.rb +18 -0
- data/lib/mini_readline/read_line/edit/insert_text.rb +18 -0
- data/lib/mini_readline/read_line/edit/next_history.rb +19 -0
- data/lib/mini_readline/read_line/edit/previous_history.rb +19 -0
- data/lib/mini_readline/read_line/edit/unmapped.rb +18 -0
- data/lib/mini_readline/read_line/edit_window.rb +72 -0
- data/lib/mini_readline/read_line/edit_window/sync_cursor.rb +15 -0
- data/lib/mini_readline/read_line/edit_window/sync_window.rb +46 -0
- data/lib/mini_readline/read_line/history.rb +61 -0
- data/lib/mini_readline/version.rb +4 -0
- data/mini_readline.gemspec +26 -0
- data/reek.txt +1 -0
- data/sire.rb +102 -0
- data/tests/mini_readline_tests.rb +55 -0
- metadata +110 -0
data/reek.txt
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0 total warnings
|
data/sire.rb
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
# A Simple Interactive Ruby Environment
|
3
|
+
|
4
|
+
require 'pp'
|
5
|
+
|
6
|
+
if ARGV[0] == 'old'
|
7
|
+
require 'readline'
|
8
|
+
puts "\nOption(old). Loaded the standard readline gem."
|
9
|
+
elsif ARGV[0] == 'local'
|
10
|
+
require './lib/mini_readline'
|
11
|
+
puts "\nOption(local). Loaded mini_readline from the local code folder."
|
12
|
+
elsif defined?(MiniReadline)
|
13
|
+
puts "The mini_readline gem is already loaded."
|
14
|
+
else
|
15
|
+
begin
|
16
|
+
require 'mini_readline'
|
17
|
+
puts "\nLoaded mini_readline from the system gem."
|
18
|
+
rescue LoadError
|
19
|
+
begin
|
20
|
+
require './lib/mini_readline'
|
21
|
+
puts "\nLoaded mini_readline from the local code folder."
|
22
|
+
rescue LoadError
|
23
|
+
require 'readline'
|
24
|
+
puts "\nLoaded the standard readline gem."
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class Object
|
30
|
+
#Generate the class lineage of the object.
|
31
|
+
def classes
|
32
|
+
begin
|
33
|
+
result = ""
|
34
|
+
klass = self.instance_of?(Class) ? self : self.class
|
35
|
+
|
36
|
+
begin
|
37
|
+
result << klass.to_s
|
38
|
+
klass = klass.superclass
|
39
|
+
result << " < " if klass
|
40
|
+
end while klass
|
41
|
+
|
42
|
+
result
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
class SIRE
|
48
|
+
#Set up the interactive session.
|
49
|
+
def initialize
|
50
|
+
@_done = false
|
51
|
+
end
|
52
|
+
|
53
|
+
#Quit the interactive session.
|
54
|
+
def q
|
55
|
+
@_done = true
|
56
|
+
puts
|
57
|
+
"Bye bye for now!"
|
58
|
+
end
|
59
|
+
|
60
|
+
#Test spawning a process. This breaks the regular readline gem.
|
61
|
+
def run(command)
|
62
|
+
IO.popen(command, "r+") do |io|
|
63
|
+
io.close_write
|
64
|
+
return io.read
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
#Execute a single line.
|
69
|
+
def exec_line(line)
|
70
|
+
result = eval line
|
71
|
+
pp result unless line.length == 0
|
72
|
+
|
73
|
+
rescue Interrupt => e
|
74
|
+
puts "\nExecution Interrupted!"
|
75
|
+
puts "\n#{e.class} detected: #{e}\n"
|
76
|
+
puts e.backtrace
|
77
|
+
puts "\n"
|
78
|
+
|
79
|
+
rescue Exception => e
|
80
|
+
puts "\n#{e.class} detected: #{e}\n"
|
81
|
+
puts e.backtrace
|
82
|
+
puts
|
83
|
+
end
|
84
|
+
|
85
|
+
#Run the interactive session.
|
86
|
+
def run_sire
|
87
|
+
puts
|
88
|
+
puts "Welcome to a Simple Interactive Ruby Environment\n"
|
89
|
+
puts "Use the command 'q' to quit.\n\n"
|
90
|
+
|
91
|
+
until @_done
|
92
|
+
exec_line(Readline.readline('SIRE>', true))
|
93
|
+
end
|
94
|
+
|
95
|
+
puts "\n\n"
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
if __FILE__ == $0
|
101
|
+
SIRE.new.run_sire
|
102
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require_relative '../lib/mini_readline'
|
4
|
+
gem 'minitest'
|
5
|
+
require 'minitest/autorun'
|
6
|
+
require 'minitest_visible'
|
7
|
+
|
8
|
+
#Test the monkey patches applied to the Object class.
|
9
|
+
class MiniReadlineTester < Minitest::Test
|
10
|
+
|
11
|
+
#Track mini-test progress.
|
12
|
+
MinitestVisible.track self, __FILE__
|
13
|
+
|
14
|
+
def test_that_module_entities_exists
|
15
|
+
assert_equal(Module, MiniReadline.class)
|
16
|
+
assert_equal(String, MiniReadline::VERSION.class)
|
17
|
+
assert_equal(Class, MiniReadline::Readline.class)
|
18
|
+
assert_equal(Class, MiniReadline::Edit.class)
|
19
|
+
assert_equal(Class, MiniReadline::EditWindow.class)
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_platform_detection
|
23
|
+
if (RUBY_PLATFORM =~ /\bcygwin\b/i) || (RUBY_PLATFORM !~ /mswin|mingw/)
|
24
|
+
assert_equal(:other, MiniReadline::PLATFORM)
|
25
|
+
else
|
26
|
+
assert_equal(:windows, MiniReadline::PLATFORM)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_reading_a_line
|
31
|
+
puts
|
32
|
+
puts "To finish this test, enter the word: quit"
|
33
|
+
|
34
|
+
edit = MiniReadline::Readline.new()
|
35
|
+
|
36
|
+
result = ''
|
37
|
+
|
38
|
+
loop do
|
39
|
+
result = edit.readline(">")
|
40
|
+
puts result.inspect
|
41
|
+
break unless result != 'quit'
|
42
|
+
end
|
43
|
+
|
44
|
+
assert_equal("quit", result)
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_prompt_verification
|
48
|
+
opts = {:window_width => 39}
|
49
|
+
edit = MiniReadline::Readline.new()
|
50
|
+
assert_raises(RuntimeError) {edit.readline(">"*20, opts)}
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
end
|
metadata
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mini_readline
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Peter Camilleri
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-01-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.11'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.11'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
description: A gem for console command entry with line edit and history.
|
42
|
+
email:
|
43
|
+
- peter.c.camilleri@gmail.com
|
44
|
+
executables: []
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- ".gitignore"
|
49
|
+
- Gemfile
|
50
|
+
- LICENSE.txt
|
51
|
+
- README.md
|
52
|
+
- Rakefile
|
53
|
+
- lib/mini_readline.rb
|
54
|
+
- lib/mini_readline/options.rb
|
55
|
+
- lib/mini_readline/raw_term.rb
|
56
|
+
- lib/mini_readline/raw_term/other.rb
|
57
|
+
- lib/mini_readline/raw_term/other/map.rb
|
58
|
+
- lib/mini_readline/raw_term/other/set_posn.rb
|
59
|
+
- lib/mini_readline/raw_term/windows.rb
|
60
|
+
- lib/mini_readline/raw_term/windows/map.rb
|
61
|
+
- lib/mini_readline/raw_term/windows/set_posn.rb
|
62
|
+
- lib/mini_readline/raw_term/windows/win_32_api.rb
|
63
|
+
- lib/mini_readline/read_line.rb
|
64
|
+
- lib/mini_readline/read_line/edit.rb
|
65
|
+
- lib/mini_readline/read_line/edit/cancel.rb
|
66
|
+
- lib/mini_readline/read_line/edit/delete_left.rb
|
67
|
+
- lib/mini_readline/read_line/edit/delete_right.rb
|
68
|
+
- lib/mini_readline/read_line/edit/enter.rb
|
69
|
+
- lib/mini_readline/read_line/edit/go_end.rb
|
70
|
+
- lib/mini_readline/read_line/edit/go_home.rb
|
71
|
+
- lib/mini_readline/read_line/edit/go_left.rb
|
72
|
+
- lib/mini_readline/read_line/edit/go_right.rb
|
73
|
+
- lib/mini_readline/read_line/edit/insert_text.rb
|
74
|
+
- lib/mini_readline/read_line/edit/next_history.rb
|
75
|
+
- lib/mini_readline/read_line/edit/previous_history.rb
|
76
|
+
- lib/mini_readline/read_line/edit/unmapped.rb
|
77
|
+
- lib/mini_readline/read_line/edit_window.rb
|
78
|
+
- lib/mini_readline/read_line/edit_window/sync_cursor.rb
|
79
|
+
- lib/mini_readline/read_line/edit_window/sync_window.rb
|
80
|
+
- lib/mini_readline/read_line/history.rb
|
81
|
+
- lib/mini_readline/version.rb
|
82
|
+
- mini_readline.gemspec
|
83
|
+
- reek.txt
|
84
|
+
- sire.rb
|
85
|
+
- tests/mini_readline_tests.rb
|
86
|
+
homepage: http://teuthida-technologies.com/
|
87
|
+
licenses:
|
88
|
+
- MIT
|
89
|
+
metadata: {}
|
90
|
+
post_install_message:
|
91
|
+
rdoc_options: []
|
92
|
+
require_paths:
|
93
|
+
- lib
|
94
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: 1.9.3
|
99
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
requirements: []
|
105
|
+
rubyforge_project:
|
106
|
+
rubygems_version: 2.2.2
|
107
|
+
signing_key:
|
108
|
+
specification_version: 4
|
109
|
+
summary: A simplified replacement for readline.
|
110
|
+
test_files: []
|