rereline 0.1.0 → 0.1.2

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: 37e887322ac196580e425a51e799bfd651e4b15bef2f5897c51c66b5c974f413
4
+ data.tar.gz: aeee41a83d406e0d298fda00090b4631f68834e653c383a471f1658c60e5b154
5
5
  SHA512:
6
- metadata.gz: d7f8486b9a4af0b4c1560b3372e532299b81aa731156c1ebc4326b34f620e6df32bb67dd170a62675bf8059caa383f02ce0f8ed076ae6afbd5424eaeb1e60676
7
- data.tar.gz: 6049ff2d93336fbbd1d13c8c14c8dbcd30f2d8e27b94379b9f4f99c624b8d58e358c7841bf782c7406a0f7e6b01fd0f00fbf776437f6c486663d46da51cdc8ad
6
+ metadata.gz: bf1c4140dbf1cee9113cfbde81b48d91e05664eb98a9034600f9e835d4938a7ac5164fee526b50875b857470e7a1590d955c6e684e649337abd51d42481f3461
7
+ data.tar.gz: 54737ebd852fa9b3b77323150d989365601a104621a210afa4cc83069d359c7417ca3d10e856ade153effd46a7047050bc8db385c39e954a43d3d400a6204be4
data/CHANGELOG.md ADDED
@@ -0,0 +1,44 @@
1
+ # Change log
2
+
3
+ ## master (unreleased)
4
+
5
+ ### New features
6
+
7
+ ### Bug fixes
8
+
9
+ ### Changes
10
+
11
+
12
+ ## 0.1.2
13
+
14
+ ### New features
15
+
16
+ ### Bug fixes
17
+
18
+ * Remove debug output.
19
+
20
+
21
+ ### Changes
22
+
23
+ ## 0.1.1
24
+
25
+ ### New features
26
+
27
+ ### Bug fixes
28
+
29
+ * Fix backspace key.
30
+
31
+ ### Changes
32
+
33
+
34
+
35
+ ## 0.1.0
36
+
37
+ ### New features
38
+
39
+ * Release
40
+
41
+ ### Bug fixes
42
+
43
+ ### Changes
44
+
@@ -1,5 +1,3 @@
1
- # ENV["RELINE_STDERR_TTY"] = "/dev/pts/1"
2
-
3
1
  module Rereline
4
2
  class Debugger
5
3
  def initialize(output)
@@ -22,11 +20,15 @@ module Rereline
22
20
 
23
21
  module Refine
24
22
  refine Kernel do
25
- output = File.open(ENV['RELINE_STDERR_TTY'], 'a') if ENV['RELINE_STDERR_TTY']
23
+ output = if ENV['RERELINE_DEBUG_OUTPUT_TTY']
24
+ File.open(ENV['RERELINE_DEBUG_OUTPUT_TTY'], 'a')
25
+ else
26
+ $stdout
27
+ end
26
28
  debugger = Debugger.new(output)
27
29
 
28
30
  define_method(:debug) do |*args, **kwd, &block|
29
- debugger.debug(*args, **kwd, &block)
31
+ debugger.debug(*args, **kwd, &block) if ENV["RERELINE_DEBUG"]
30
32
  end
31
33
  end
32
34
  end
@@ -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
@@ -55,7 +55,6 @@ module Rereline
55
55
  extended_keys.each { |it|
56
56
  editor.input_key(key_actor.call(it))
57
57
  }
58
- debug { editor.input_text }
59
58
  renader_editor
60
59
  end
61
60
 
@@ -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.2"
5
5
  end
data/rereline.gemspec CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
15
15
 
16
16
  spec.metadata["homepage_uri"] = spec.homepage
17
17
  spec.metadata["source_code_uri"] = "https://github.com/osyo-manga/gem-rereline"
18
- # spec.metadata["changelog_uri"] = "https://example.com"
18
+ spec.metadata["changelog_uri"] = "https://github.com/osyo-manga/gem-rereline/CHANGELOG.md"
19
19
 
20
20
  # Specify which files should be added to the gem when it is released.
21
21
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
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.2
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-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: reline
@@ -31,6 +31,7 @@ executables: []
31
31
  extensions: []
32
32
  extra_rdoc_files: []
33
33
  files:
34
+ - CHANGELOG.md
34
35
  - Gemfile
35
36
  - README.md
36
37
  - Rakefile
@@ -48,6 +49,7 @@ licenses: []
48
49
  metadata:
49
50
  homepage_uri: https://github.com/osyo-manga/gem-rereline
50
51
  source_code_uri: https://github.com/osyo-manga/gem-rereline
52
+ changelog_uri: https://github.com/osyo-manga/gem-rereline/CHANGELOG.md
51
53
  post_install_message:
52
54
  rdoc_options: []
53
55
  require_paths: