rereline 0.1.0 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dd3498e07ec6c70cc5fd50bdbcf32ed452107feece93a29699684efa2f6ee37d
4
- data.tar.gz: 830bbedf1db6a285671a41ad73318bb896284e548e9477699adb6e35796f021e
3
+ metadata.gz: 0c2809dffa8e5c6fc90911491e555c88edfb9e6027649b8e8dadf4f5f59b4eec
4
+ data.tar.gz: '081c5932b0fa128517400785fdf96ce3684036cc7d1ab6388c7672523840e408'
5
5
  SHA512:
6
- metadata.gz: d7f8486b9a4af0b4c1560b3372e532299b81aa731156c1ebc4326b34f620e6df32bb67dd170a62675bf8059caa383f02ce0f8ed076ae6afbd5424eaeb1e60676
7
- data.tar.gz: 6049ff2d93336fbbd1d13c8c14c8dbcd30f2d8e27b94379b9f4f99c624b8d58e358c7841bf782c7406a0f7e6b01fd0f00fbf776437f6c486663d46da51cdc8ad
6
+ metadata.gz: 8d914ac00d7740918ba5465e3c483fff4d6f98c60cd68599cb763741b8c3d87c26ee9df298ed24292d0c7cfe646883670658632392640f8736010497c0ec9f62
7
+ data.tar.gz: 7e5d25ac9f1ed33fe25c3eebdf207a018b450f7bdd27fcd0e12b630ee56054b3a67073cacbf7d0a1f10ec984c67bf547101a41077fc1e73bc3f194396d2d7ce8
@@ -1,14 +1,17 @@
1
1
  module Rereline
2
2
  class LineEditor
3
- attr_accessor :prompt, :encoding
4
- attr_reader :input_text, :input_pos
3
+ using Debugger::Refine
4
+
5
+ attr_accessor :prompt, :encoding, :input_text
6
+ attr_reader :input_pos
5
7
 
6
8
  def initialize(&block)
7
9
  @input_text = ""
10
+ @input_pos = 0
8
11
  @encoding = Encoding.default_external
9
12
  block.call(self) if block
13
+ @input_text = @input_text.dup
10
14
  @input_key_buffer = []
11
- @input_pos = 0
12
15
  end
13
16
 
14
17
  def input_key(key)
@@ -23,16 +26,17 @@ module Rereline
23
26
 
24
27
  def input_char(c)
25
28
  input_text.insert(input_pos, c)
26
- @input_pos += 1
29
+ move_right
27
30
  end
28
31
 
29
32
  def delete_prev_input_pos
30
- input_text.slice!(-1)
31
- @input_pos -= 1
33
+ return if input_pos <= 0
34
+ input_text.slice!(input_pos - 1, 1)
35
+ move_left
32
36
  end
33
37
 
34
38
  def move_input_pos(offset)
35
- @input_pos = (input_pos + offset).clamp(0, input_text.size)
39
+ self.input_pos = input_pos + offset
36
40
  end
37
41
 
38
42
  def move_left
@@ -43,6 +47,10 @@ module Rereline
43
47
  move_input_pos(+1)
44
48
  end
45
49
 
50
+ def input_pos=(pos)
51
+ @input_pos = pos.clamp(0, input_text.size)
52
+ end
53
+
46
54
  def prev_input_pos_line
47
55
  "#{prompt}#{input_text.slice(0, input_pos)}"
48
56
  end
@@ -1,8 +1,8 @@
1
1
  require "reline"
2
+ require_relative "./debugger.rb"
2
3
  require_relative "./line_editor.rb"
3
4
  require_relative "./key_stroke.rb"
4
5
  require_relative "./key_actor.rb"
5
- require_relative "./debugger.rb"
6
6
 
7
7
 
8
8
  module Rereline
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rereline
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.1"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rereline
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - manga_osyo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-01-30 00:00:00.000000000 Z
11
+ date: 2023-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: reline