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 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