summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormanga_osyo <manga.osyo@gmail.com>2019-11-20 09:13:42 +0900
committeraycabta <aycabta@gmail.com>2019-11-21 00:47:37 +0900
commit6723aa07e591a13996b5af205c589200d44c5249 (patch)
tree081ff2a73fe80c982df3e7435571aceb560002fc
parent81586a4d9fd6afe1c39f737a704c5010faf22192 (diff)
Change argument `Proc` to `#call` defined object.
This is the same as the behavior of Readline.
-rw-r--r--lib/reline.rb10
-rw-r--r--test/reline/test_reline.rb24
2 files changed, 29 insertions, 5 deletions
diff --git a/lib/reline.rb b/lib/reline.rb
index feee94e994..7352d1a625 100644
--- a/lib/reline.rb
+++ b/lib/reline.rb
@@ -84,22 +84,22 @@ module Reline
end
def completion_proc=(p)
- raise ArgumentError unless p.is_a?(Proc)
+ raise ArgumentError unless p.respond_to?(:call)
@completion_proc = p
end
def output_modifier_proc=(p)
- raise ArgumentError unless p.is_a?(Proc)
+ raise ArgumentError unless p.respond_to?(:call)
@output_modifier_proc = p
end
def prompt_proc=(p)
- raise ArgumentError unless p.is_a?(Proc)
+ raise ArgumentError unless p.respond_to?(:call)
@prompt_proc = p
end
def auto_indent_proc=(p)
- raise ArgumentError unless p.is_a?(Proc)
+ raise ArgumentError unless p.respond_to?(:call)
@auto_indent_proc = p
end
@@ -108,7 +108,7 @@ module Reline
end
def dig_perfect_match_proc=(p)
- raise ArgumentError unless p.is_a?(Proc)
+ raise ArgumentError unless p.respond_to?(:call)
@dig_perfect_match_proc = p
end
diff --git a/test/reline/test_reline.rb b/test/reline/test_reline.rb
index a0875d1c18..274f1aa6ba 100644
--- a/test/reline/test_reline.rb
+++ b/test/reline/test_reline.rb
@@ -2,6 +2,10 @@ require_relative 'helper'
require "reline"
class Reline::Test < Reline::TestCase
+ class DummyCallbackObject
+ def call; end
+ end
+
def setup
end
@@ -102,6 +106,10 @@ class Reline::Test < Reline::TestCase
assert_raise(ArgumentError) { Reline.completion_proc = 42 }
assert_raise(ArgumentError) { Reline.completion_proc = "hoge" }
+
+ dummy = DummyCallbackObject.new
+ Reline.completion_proc = dummy
+ assert_equal(dummy, Reline.completion_proc)
end
def test_output_modifier_proc
@@ -117,6 +125,10 @@ class Reline::Test < Reline::TestCase
assert_raise(ArgumentError) { Reline.output_modifier_proc = 42 }
assert_raise(ArgumentError) { Reline.output_modifier_proc = "hoge" }
+
+ dummy = DummyCallbackObject.new
+ Reline.output_modifier_proc = dummy
+ assert_equal(dummy, Reline.output_modifier_proc)
end
def test_prompt_proc
@@ -132,6 +144,10 @@ class Reline::Test < Reline::TestCase
assert_raise(ArgumentError) { Reline.prompt_proc = 42 }
assert_raise(ArgumentError) { Reline.prompt_proc = "hoge" }
+
+ dummy = DummyCallbackObject.new
+ Reline.prompt_proc = dummy
+ assert_equal(dummy, Reline.prompt_proc)
end
def test_auto_indent_proc
@@ -147,6 +163,10 @@ class Reline::Test < Reline::TestCase
assert_raise(ArgumentError) { Reline.auto_indent_proc = 42 }
assert_raise(ArgumentError) { Reline.auto_indent_proc = "hoge" }
+
+ dummy = DummyCallbackObject.new
+ Reline.auto_indent_proc = dummy
+ assert_equal(dummy, Reline.auto_indent_proc)
end
def test_pre_input_hook
@@ -174,6 +194,10 @@ class Reline::Test < Reline::TestCase
assert_raise(ArgumentError) { Reline.dig_perfect_match_proc = 42 }
assert_raise(ArgumentError) { Reline.dig_perfect_match_proc = "hoge" }
+
+ dummy = DummyCallbackObject.new
+ Reline.dig_perfect_match_proc = dummy
+ assert_equal(dummy, Reline.dig_perfect_match_proc)
end
def test_insert_text