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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -37
  3. data/lib/mini_readline.rb +14 -10
  4. data/lib/mini_readline/exceptions.rb +0 -3
  5. data/lib/mini_readline/maps.rb +126 -0
  6. data/lib/mini_readline/options.rb +3 -7
  7. data/lib/mini_readline/read_line.rb +17 -25
  8. data/lib/mini_readline/read_line/edit.rb +10 -11
  9. data/lib/mini_readline/read_line/edit/auto_complete.rb +7 -7
  10. data/lib/mini_readline/read_line/edit/auto_complete/array_source.rb +7 -7
  11. data/lib/mini_readline/read_line/edit/auto_complete/auto_file_source.rb +19 -19
  12. data/lib/mini_readline/read_line/edit/auto_complete/auto_manager.rb +5 -5
  13. data/lib/mini_readline/read_line/edit/auto_complete/file_folder_source.rb +6 -6
  14. data/lib/mini_readline/read_line/edit/auto_complete/quoted_file_folder_source.rb +7 -7
  15. data/lib/mini_readline/read_line/edit/cancel.rb +3 -3
  16. data/lib/mini_readline/read_line/edit/delete_all_left.rb +4 -4
  17. data/lib/mini_readline/read_line/edit/delete_all_right.rb +4 -4
  18. data/lib/mini_readline/read_line/edit/delete_left.rb +4 -4
  19. data/lib/mini_readline/read_line/edit/delete_right.rb +4 -4
  20. data/lib/mini_readline/read_line/edit/edit_window.rb +17 -19
  21. data/lib/mini_readline/read_line/edit/edit_window/sync_cursor.rb +4 -4
  22. data/lib/mini_readline/read_line/edit/edit_window/sync_window.rb +9 -9
  23. data/lib/mini_readline/read_line/edit/end_of_input.rb +4 -4
  24. data/lib/mini_readline/read_line/edit/enter.rb +3 -3
  25. data/lib/mini_readline/read_line/edit/go_end.rb +3 -3
  26. data/lib/mini_readline/read_line/edit/go_home.rb +3 -3
  27. data/lib/mini_readline/read_line/edit/go_left.rb +4 -4
  28. data/lib/mini_readline/read_line/edit/go_right.rb +4 -4
  29. data/lib/mini_readline/read_line/edit/insert_text.rb +3 -3
  30. data/lib/mini_readline/read_line/edit/next_history.rb +4 -4
  31. data/lib/mini_readline/read_line/edit/previous_history.rb +4 -4
  32. data/lib/mini_readline/read_line/edit/unmapped.rb +4 -4
  33. data/lib/mini_readline/read_line/edit/word_left.rb +4 -4
  34. data/lib/mini_readline/read_line/edit/word_right.rb +4 -4
  35. data/lib/mini_readline/read_line/history.rb +9 -9
  36. data/lib/mini_readline/read_line/no_history.rb +8 -8
  37. data/lib/mini_readline/read_line/prompt.rb +7 -7
  38. data/lib/mini_readline/version.rb +7 -1
  39. data/mini_readline.gemspec +5 -4
  40. data/rakefile.rb +8 -23
  41. data/sire.rb +1 -1
  42. data/tests/mini_readline_tests.rb +13 -14
  43. metadata +23 -34
  44. data/lib/mini_readline/raw_term.rb +0 -47
  45. data/lib/mini_readline/raw_term/ansi.rb +0 -70
  46. data/lib/mini_readline/raw_term/ansi/map.rb +0 -68
  47. data/lib/mini_readline/raw_term/ansi/set_posn.rb +0 -22
  48. data/lib/mini_readline/raw_term/ansi/window_width.rb +0 -17
  49. data/lib/mini_readline/raw_term/mapped_term.rb +0 -23
  50. data/lib/mini_readline/raw_term/mapped_term/mapper.rb +0 -53
  51. data/lib/mini_readline/raw_term/windows.rb +0 -100
  52. data/lib/mini_readline/raw_term/windows/map.rb +0 -63
  53. data/lib/mini_readline/raw_term/windows/set_posn.rb +0 -19
  54. data/lib/mini_readline/raw_term/windows/win_32_api.rb +0 -31
  55. 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.8.1"
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
@@ -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 = "A simplified replacement for readline."
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 = '>=1.9.3'
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 'rdoc', "~> 5.0"
35
- spec.add_development_dependency 'reek', "~> 4.5"
36
+ spec.add_development_dependency 'reek', ">= 5.0.2"
36
37
 
37
38
  end
@@ -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 "What is the module load out?"
48
- task :vls do |t|
49
- require 'vls'
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
- puts
52
- VersionLS.print_vls(/./)
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
@@ -66,7 +66,7 @@ class Object
66
66
  puts 'Not supported by old readline.'
67
67
  else
68
68
  print 'Press a key:'
69
- MiniReadline::BASE_OPTIONS[:term].get_mapped_keystroke
69
+ MiniTerm.get_mapped_char
70
70
  end
71
71
  end
72
72
 
@@ -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.8.1
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-09-16 00:00:00.000000000 Z
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: '4.5'
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: '4.5'
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: 1.9.3
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: A simplified replacement for readline.
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