rereline 0.1.0 → 0.1.2

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