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,14 +1,14 @@
1
1
  # coding: utf-8
2
2
 
3
- #* read_line/window/sync_cursor.rb - Keep the cursor in sync.
3
+ # Keep the cursor in sync.
4
4
  module MiniReadline
5
5
 
6
- #* read_line/window/sync_cursor.rb - Keep the cursor in sync.
6
+ # Keep the cursor in sync.
7
7
  class EditWindow
8
8
 
9
- #Keep the cursor in sync!
9
+ # Keep the cursor in sync!
10
10
  def sync_cursor(edit_posn)
11
- @term.set_posn(edit_posn - left_margin + prompt.length)
11
+ MiniTerm.set_posn(column: edit_posn - left_margin + prompt.length)
12
12
  end
13
13
 
14
14
  end
@@ -1,12 +1,12 @@
1
1
  # coding: utf-8
2
2
 
3
- #* read_line/window/sync_window.rb - Keeping the screen in sync.
3
+ # Keeping the screen in sync.
4
4
  module MiniReadline
5
5
 
6
- #* read_line/window/sync_window.rb - Keeping the screen in sync.
6
+ # Keeping the screen in sync.
7
7
  class EditWindow
8
8
 
9
- #Keep the edit window in sync!
9
+ # Keep the edit window in sync!
10
10
  def sync_window(edit_buffer, edit_posn)
11
11
  unless check_margins(edit_buffer.length, edit_posn)
12
12
  window_buffer.clear
@@ -18,7 +18,7 @@ module MiniReadline
18
18
  @window_buffer = image
19
19
  end
20
20
 
21
- #Verify/update the window margins. Returns true if they're fine.
21
+ # Verify/update the window margins. Returns true if they're fine.
22
22
  def check_margins(length, edit_posn)
23
23
  old_margins = [left_margin, right_margin]
24
24
 
@@ -33,7 +33,7 @@ module MiniReadline
33
33
  old_margins == [left_margin, right_margin]
34
34
  end
35
35
 
36
- #Compute what should be on the screen.
36
+ # Compute what should be on the screen.
37
37
  def build_screen_image(edit_buffer)
38
38
  working_region = edit_buffer[left_margin..right_margin]
39
39
 
@@ -44,17 +44,17 @@ module MiniReadline
44
44
  end.ljust(active_width)
45
45
  end
46
46
 
47
- #Bring the screen into agreement with the image.
47
+ # Bring the screen into agreement with the image.
48
48
  def update_screen(image)
49
49
  if @show_prompt
50
- @term.put_string("\r#{prompt.text}\r")
50
+ MiniTerm.print("\r#{prompt.text}\r")
51
51
  @show_prompt = false
52
52
  end
53
53
 
54
54
  (0...active_width).each do |index|
55
55
  if (image_char = image[index]) != window_buffer[index]
56
- @term.set_posn(prompt.length + index)
57
- @term.put_string(image_char)
56
+ MiniTerm.set_posn(column: prompt.length + index)
57
+ MiniTerm.print(image_char)
58
58
  end
59
59
  end
60
60
  end
@@ -1,17 +1,17 @@
1
1
  # coding: utf-8
2
2
 
3
- #* read_line/window/edit/end_of_input.rb - Process :end_of_input
3
+ # Process :end_of_input
4
4
  module MiniReadline
5
5
 
6
- #* read_line/window/edit/end_of_input.rb - Process :end_of_input
6
+ # Process :end_of_input
7
7
  class Edit
8
8
 
9
- #The insert_text command. We are DONE!
9
+ # We are DONE!
10
10
  def end_of_input(_keyboard_args)
11
11
  if @options[:eoi_detect]
12
12
  raise MiniReadlineEOI, "End of input detected."
13
13
  else
14
- @term.beep
14
+ MiniTerm.beep
15
15
  end
16
16
  end
17
17
  end
@@ -1,12 +1,12 @@
1
1
  # coding: utf-8
2
2
 
3
- #* read_line/window/edit/enter.rb - Process :enter
3
+ # Process :enter
4
4
  module MiniReadline
5
5
 
6
- #* read_line/window/edit/enter.rb - Process :enter
6
+ # Process :enter
7
7
  class Edit
8
8
 
9
- #The insert_text command. We are DONE!
9
+ # The insert_text command.
10
10
  def enter(_keyboard_args)
11
11
  @working = false
12
12
  end
@@ -1,12 +1,12 @@
1
1
  # coding: utf-8
2
2
 
3
- #* read_line/window/edit/go_home.rb - Process :go_end
3
+ # Process :go_end
4
4
  module MiniReadline
5
5
 
6
- #* read_line/window/edit/go_home.rb - Process :go_end
6
+ # Process :go_end
7
7
  class Edit
8
8
 
9
- #A lot to the right please!
9
+ # A lot to the right please!
10
10
  def go_end(_keyboard_args)
11
11
  @edit_posn = length
12
12
  end
@@ -1,12 +1,12 @@
1
1
  # coding: utf-8
2
2
 
3
- #* read_line/window/edit/go_home.rb - Process :go_home
3
+ # Process :go_home
4
4
  module MiniReadline
5
5
 
6
- #* read_line/window/edit/go_home.rb - Process :go_home
6
+ # Process :go_home
7
7
  class Edit
8
8
 
9
- #A lot to the left please!
9
+ # A lot to the left please!
10
10
  def go_home(_keyboard_args)
11
11
  @edit_posn = 0
12
12
  end
@@ -1,17 +1,17 @@
1
1
  # coding: utf-8
2
2
 
3
- #* read_line/window/edit/go_left.rb - Process :go_left
3
+ # Process :go_left
4
4
  module MiniReadline
5
5
 
6
- #* read_line/window/edit/go_left.rb - Process :go_left
6
+ # Process :go_left
7
7
  class Edit
8
8
 
9
- #A little to the left please!
9
+ # A little to the left please!
10
10
  def go_left(_keyboard_args)
11
11
  if @edit_posn > 0
12
12
  @edit_posn -= 1
13
13
  else
14
- @term.beep
14
+ MiniTerm.beep
15
15
  end
16
16
  end
17
17
  end
@@ -1,17 +1,17 @@
1
1
  # coding: utf-8
2
2
 
3
- #* read_line/window/edit/go_right.rb - Process :go_right
3
+ # Process :go_right
4
4
  module MiniReadline
5
5
 
6
- #* read_line/window/edit/go_right.rb - Process :go_right
6
+ # Process :go_right
7
7
  class Edit
8
8
 
9
- #A little to the right please!
9
+ # A little to the right please!
10
10
  def go_right(_keyboard_args)
11
11
  if @edit_posn < edit_buffer.length
12
12
  @edit_posn += 1
13
13
  else
14
- @term.beep
14
+ MiniTerm.beep
15
15
  end
16
16
  end
17
17
  end
@@ -1,12 +1,12 @@
1
1
  # coding: utf-8
2
2
 
3
- #* read_line/window/edit/insert_text.rb - Process :insert_text
3
+ # Process :insert_text
4
4
  module MiniReadline
5
5
 
6
- #* read_line/window/edit/insert_text.rb - Process :insert_text
6
+ # Process :insert_text
7
7
  class Edit
8
8
 
9
- #The insert_text command
9
+ # The insert_text command
10
10
  def insert_text(keyboard_args)
11
11
  @edit_buffer = @edit_buffer[0...@edit_posn] +
12
12
  keyboard_args[1] +
@@ -1,18 +1,18 @@
1
1
  # coding: utf-8
2
2
 
3
- #* read_line/window/edit/next_history.rb - Process :next_history
3
+ # Process :next_history
4
4
  module MiniReadline
5
5
 
6
- #* read_line/window/edit/next_history.rb - Process :next_history
6
+ # Process :next_history
7
7
  class Edit
8
8
 
9
- #The insert_text command. We are DONE!
9
+ # The insert_text command. We are DONE!
10
10
  def next_history(_keyboard_args)
11
11
  if (temp = @history.get_next_history)
12
12
  @edit_buffer = temp
13
13
  @edit_posn = temp.length
14
14
  else
15
- @term.beep
15
+ MiniTerm.beep
16
16
  end
17
17
  end
18
18
  end
@@ -1,18 +1,18 @@
1
1
  # coding: utf-8
2
2
 
3
- #* read_line/window/edit/previous_history.rb - Process :previous_history
3
+ # Process :previous_history
4
4
  module MiniReadline
5
5
 
6
- #* read_line/window/edit/previous_history.rb - Process :previous_history
6
+ # Process :previous_history
7
7
  class Edit
8
8
 
9
- #The insert_text command. We are DONE!
9
+ # The insert_text command. We are DONE!
10
10
  def previous_history(_keyboard_args)
11
11
  if (temp = @history.get_previous_history)
12
12
  @edit_buffer = temp
13
13
  @edit_posn = temp.length
14
14
  else
15
- @term.beep
15
+ MiniTerm.beep
16
16
  end
17
17
  end
18
18
  end
@@ -1,14 +1,14 @@
1
1
  # coding: utf-8
2
2
 
3
- #* read_line/window/edit/unmapped.rb - Process :unmapped
3
+ # Process :unmapped
4
4
  module MiniReadline
5
5
 
6
- #* read_line/window/edit/unmapped.rb - Process :unmapped
6
+ # Process :unmapped
7
7
  class Edit
8
8
 
9
- #An unmapped key was pressed. Beep!
9
+ # An unmapped key was pressed. Beep!
10
10
  def unmapped(_keyboard_args)
11
- @term.beep
11
+ MiniTerm.beep
12
12
  end
13
13
  end
14
14
  end
@@ -1,18 +1,18 @@
1
1
  # coding: utf-8
2
2
 
3
- #* read_line/window/edit/word_left.rb - Process :word_left
3
+ # Process :word_left
4
4
  module MiniReadline
5
5
 
6
- #* read_line/window/edit/word_left.rb - Process :word_left
6
+ # Process :word_left
7
7
  class Edit
8
8
 
9
- #A little more to the left please!
9
+ # A little more to the left please!
10
10
  def word_left(_keyboard_args)
11
11
  if @edit_posn > 0
12
12
  left = @edit_buffer[0...@edit_posn]
13
13
  @edit_posn = (posn = left.rindex(/\s\S/)) ? posn+1 : 0
14
14
  else
15
- @term.beep
15
+ MiniTerm.beep
16
16
  end
17
17
  end
18
18
  end
@@ -1,18 +1,18 @@
1
1
  # coding: utf-8
2
2
 
3
- #* read_line/window/edit/word_right.rb - Process :word_right
3
+ # Process :word_right
4
4
  module MiniReadline
5
5
 
6
- #* read_line/window/edit/word_right.rb - Process :word_right
6
+ # Process :word_right
7
7
  class Edit
8
8
 
9
- #A little more to the right please!
9
+ # A little more to the right please!
10
10
  def word_right(_keyboard_args)
11
11
  if @edit_posn < length
12
12
  right = @edit_buffer[(@edit_posn+1)..-1]
13
13
  @edit_posn = (posn = right.index(/\s\S/)) ? @edit_posn+posn+2 : length
14
14
  else
15
- @term.beep
15
+ MiniTerm.beep
16
16
  end
17
17
  end
18
18
  end
@@ -1,29 +1,29 @@
1
1
  # coding: utf-8
2
2
 
3
- #* read_line/history.rb - Edit history support
3
+ # Edit history support
4
4
  module MiniReadline
5
5
 
6
- #* read_line/history.rb - Support for the edit history.
6
+ # Support for the edit history.
7
7
  class History
8
8
 
9
- #Setup the history array of the mini line editor.
9
+ # Setup the history array of the mini line editor.
10
10
  def initialize(buffer)
11
11
  @_buffer = buffer
12
12
  goto_end_of_history
13
13
  end
14
14
 
15
- #Get the history object ready for the next read line operation.
15
+ # Get the history object ready for the next read line operation.
16
16
  def initialize_parms(options)
17
17
  @options = options
18
18
  goto_end_of_history
19
19
  end
20
20
 
21
- #Go to the end of the history array.
21
+ # Go to the end of the history array.
22
22
  def goto_end_of_history
23
23
  @history_cursor = history.length
24
24
  end
25
25
 
26
- #Get the previous history string.
26
+ # Get the previous history string.
27
27
  def get_previous_history
28
28
  if @history_cursor > 0
29
29
  @history_cursor -= 1
@@ -33,7 +33,7 @@ module MiniReadline
33
33
  end
34
34
  end
35
35
 
36
- #Get the next history string
36
+ # Get the next history string
37
37
  def get_next_history
38
38
  if @history_cursor < history.length
39
39
  @history_cursor += 1
@@ -43,7 +43,7 @@ module MiniReadline
43
43
  end
44
44
  end
45
45
 
46
- #Append a string to the history buffer if enabled.
46
+ # Append a string to the history buffer if enabled.
47
47
  def append_history(str)
48
48
  return if @options[:no_blanks] && str.strip.empty?
49
49
  history.delete(str) if @options[:no_dups]
@@ -51,7 +51,7 @@ module MiniReadline
51
51
  history << str
52
52
  end
53
53
 
54
- #Get the history buffer associated with this instance.
54
+ # Get the history buffer associated with this instance.
55
55
  def history
56
56
  @_buffer
57
57
  end
@@ -1,34 +1,34 @@
1
1
  # coding: utf-8
2
2
 
3
- #* read_line/no_history.rb - Support for the edit without history.
3
+ # Support for the edit without history.
4
4
  module MiniReadline
5
5
 
6
- #* read_line/no_history.rb - Support for the edit without history.
6
+ # Support for the edit without history.
7
7
  class NoHistory
8
8
 
9
- #Get the history object ready for the next read line operation. NOP
9
+ # Get the history object ready for the next read line operation. NOP
10
10
  def initialize_parms(_options)
11
11
  end
12
12
 
13
- #Go to the end of the history array. NOP
13
+ # Go to the end of the history array. NOP
14
14
  def goto_end_of_history
15
15
  end
16
16
 
17
- #Get the previous history string. NOP
17
+ # Get the previous history string. NOP
18
18
  def get_previous_history
19
19
  false
20
20
  end
21
21
 
22
- #Get the next history string. NOP
22
+ # Get the next history string. NOP
23
23
  def get_next_history
24
24
  false
25
25
  end
26
26
 
27
- #Append a string to the history buffer if enabled. NOP
27
+ # Append a string to the history buffer if enabled. NOP
28
28
  def append_history(_str)
29
29
  end
30
30
 
31
- #Get the history buffer associated with this instance. Empty
31
+ # Get the history buffer associated with this instance. Empty
32
32
  def history
33
33
  []
34
34
  end
@@ -1,25 +1,25 @@
1
1
  # coding: utf-8
2
2
 
3
- #Support for the specialized prompt string class.
3
+ # Support for the specialized prompt string class.
4
4
  module MiniReadline
5
5
 
6
- #A class used to hold prompt strings that may contain ANSI terminal
7
- #control embellishments.
6
+ # A class used to hold prompt strings that may contain ANSI terminal
7
+ # control embellishments.
8
8
  class Prompt
9
9
 
10
- #Get the text.
10
+ # Get the text.
11
11
  attr_reader :text
12
12
 
13
- #Get the length without ANSI sequences.
13
+ # Get the length without ANSI sequences.
14
14
  attr_reader :length
15
15
 
16
- #Create a special prompt text.
16
+ # Create a special prompt text.
17
17
  def initialize(text)
18
18
  @text = text
19
19
  @length = text.gsub(/\x1B\[(\d|;)*[@-~]/, "").length
20
20
  end
21
21
 
22
- #Inspect the prompt
22
+ # Inspect the prompt
23
23
  def inspect
24
24
  "<Prompt: #{@text.inspect}>"
25
25
  end