rereline 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rereline/line_editor.rb +15 -7
- data/lib/rereline/terminal.rb +1 -1
- data/lib/rereline/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0c2809dffa8e5c6fc90911491e555c88edfb9e6027649b8e8dadf4f5f59b4eec
|
4
|
+
data.tar.gz: '081c5932b0fa128517400785fdf96ce3684036cc7d1ab6388c7672523840e408'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d914ac00d7740918ba5465e3c483fff4d6f98c60cd68599cb763741b8c3d87c26ee9df298ed24292d0c7cfe646883670658632392640f8736010497c0ec9f62
|
7
|
+
data.tar.gz: 7e5d25ac9f1ed33fe25c3eebdf207a018b450f7bdd27fcd0e12b630ee56054b3a67073cacbf7d0a1f10ec984c67bf547101a41077fc1e73bc3f194396d2d7ce8
|
data/lib/rereline/line_editor.rb
CHANGED
@@ -1,14 +1,17 @@
|
|
1
1
|
module Rereline
|
2
2
|
class LineEditor
|
3
|
-
|
4
|
-
|
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
|
-
|
29
|
+
move_right
|
27
30
|
end
|
28
31
|
|
29
32
|
def delete_prev_input_pos
|
30
|
-
|
31
|
-
|
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
|
-
|
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
|
data/lib/rereline/terminal.rb
CHANGED
data/lib/rereline/version.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2023-02-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: reline
|