rubysl-readline 0.0.1 → 1.0.0
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 +7 -0
- data/.gitignore +0 -1
- data/.travis.yml +8 -0
- data/README.md +2 -2
- data/Rakefile +0 -1
- data/ext/rubysl/readline/extconf.rb +64 -0
- data/ext/rubysl/readline/readline.c +537 -0
- data/lib/readline.rb +1 -0
- data/lib/rubysl/readline.rb +2 -0
- data/lib/{rubysl-readline → rubysl/readline}/version.rb +1 -1
- data/rubysl-readline.gemspec +20 -18
- data/spec/basic_quote_characters_spec.rb +18 -0
- data/spec/basic_word_break_characters_spec.rb +18 -0
- data/spec/completer_quote_characters_spec.rb +18 -0
- data/spec/completer_word_break_characters_spec.rb +18 -0
- data/spec/completion_append_character_spec.rb +18 -0
- data/spec/completion_case_fold_spec.rb +20 -0
- data/spec/completion_proc_spec.rb +24 -0
- data/spec/constants_spec.rb +20 -0
- data/spec/emacs_editing_mode_spec.rb +11 -0
- data/spec/filename_quote_characters_spec.rb +18 -0
- data/spec/history/append_spec.rb +30 -0
- data/spec/history/delete_at_spec.rb +47 -0
- data/spec/history/each_spec.rb +31 -0
- data/spec/history/element_reference_spec.rb +42 -0
- data/spec/history/element_set_spec.rb +37 -0
- data/spec/history/empty_spec.rb +15 -0
- data/spec/history/history_spec.rb +11 -0
- data/spec/history/length_spec.rb +10 -0
- data/spec/history/pop_spec.rb +32 -0
- data/spec/history/push_spec.rb +28 -0
- data/spec/history/shared/size.rb +14 -0
- data/spec/history/shift_spec.rb +32 -0
- data/spec/history/size_spec.rb +10 -0
- data/spec/history/to_s_spec.rb +11 -0
- data/spec/readline_spec.rb +32 -0
- data/spec/vi_editing_mode_spec.rb +11 -0
- metadata +135 -87
- data/lib/rubysl-readline.rb +0 -7
data/lib/readline.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "rubysl/readline"
|
data/rubysl-readline.gemspec
CHANGED
@@ -1,22 +1,24 @@
|
|
1
|
-
#
|
2
|
-
require
|
1
|
+
# coding: utf-8
|
2
|
+
require './lib/rubysl/readline/version'
|
3
3
|
|
4
|
-
Gem::Specification.new do |
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
4
|
+
Gem::Specification.new do |spec|
|
5
|
+
spec.name = "rubysl-readline"
|
6
|
+
spec.version = RubySL::Readline::VERSION
|
7
|
+
spec.authors = ["Brian Shirai"]
|
8
|
+
spec.email = ["brixen@gmail.com"]
|
9
|
+
spec.description = %q{Ruby standard library readline.}
|
10
|
+
spec.summary = %q{Ruby standard library readline.}
|
11
|
+
spec.homepage = "https://github.com/rubysl/rubysl-readline"
|
12
|
+
spec.license = "BSD"
|
10
13
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
gem.version = RubySL::Readline::VERSION
|
14
|
+
spec.files = `git ls-files`.split($/)
|
15
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
16
|
+
spec.extensions = ["ext/rubysl/readline/extconf.rb"]
|
17
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
|
+
spec.require_paths = ["lib"]
|
17
19
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
20
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
21
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
22
|
+
spec.add_development_dependency "mspec", "~> 1.5"
|
23
|
+
spec.add_development_dependency "rubysl-prettyprint", "~> 1.0"
|
22
24
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
process_is_foreground do
|
2
|
+
with_feature :readline do
|
3
|
+
require 'readline'
|
4
|
+
|
5
|
+
describe "Readline.basic_quote_characters" do
|
6
|
+
it "returns not nil" do
|
7
|
+
Readline.basic_quote_characters.should_not be_nil
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "Readline.basic_quote_characters=" do
|
12
|
+
it "returns the passed string" do
|
13
|
+
Readline.basic_quote_characters = "test"
|
14
|
+
Readline.basic_quote_characters.should == "test"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
process_is_foreground do
|
2
|
+
with_feature :readline do
|
3
|
+
require 'readline'
|
4
|
+
|
5
|
+
describe "Readline.basic_word_break_characters" do
|
6
|
+
it "returns not nil" do
|
7
|
+
Readline.basic_word_break_characters.should_not be_nil
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "Readline.basic_word_break_characters=" do
|
12
|
+
it "returns the passed string" do
|
13
|
+
Readline.basic_word_break_characters = "test"
|
14
|
+
Readline.basic_word_break_characters.should == "test"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
process_is_foreground do
|
2
|
+
with_feature :readline do
|
3
|
+
require 'readline'
|
4
|
+
|
5
|
+
describe "Readline.completer_quote_characters" do
|
6
|
+
it "returns nil" do
|
7
|
+
Readline.completer_quote_characters.should be_nil
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "Readline.completer_quote_characters=" do
|
12
|
+
it "returns the passed string" do
|
13
|
+
Readline.completer_quote_characters = "test"
|
14
|
+
Readline.completer_quote_characters.should == "test"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
process_is_foreground do
|
2
|
+
with_feature :readline do
|
3
|
+
require 'readline'
|
4
|
+
|
5
|
+
describe "Readline.completer_word_break_characters" do
|
6
|
+
it "returns nil" do
|
7
|
+
Readline.completer_word_break_characters.should be_nil
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "Readline.completer_word_break_characters=" do
|
12
|
+
it "returns the passed string" do
|
13
|
+
Readline.completer_word_break_characters = "test"
|
14
|
+
Readline.completer_word_break_characters.should == "test"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
process_is_foreground do
|
2
|
+
with_feature :readline do
|
3
|
+
require 'readline'
|
4
|
+
|
5
|
+
describe "Readline.completion_append_character" do
|
6
|
+
it "returns not nil" do
|
7
|
+
Readline.completion_append_character.should_not be_nil
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "Readline.completion_append_character=" do
|
12
|
+
it "returns the first character of the passed string" do
|
13
|
+
Readline.completion_append_character = "test"
|
14
|
+
Readline.completion_append_character.should == "t"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
process_is_foreground do
|
2
|
+
with_feature :readline do
|
3
|
+
require 'readline'
|
4
|
+
|
5
|
+
describe "Readline.completion_case_fold" do
|
6
|
+
it "returns nil" do
|
7
|
+
Readline.completion_case_fold.should be_nil
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "Readline.completion_case_fold=" do
|
12
|
+
it "returns the passed boolean" do
|
13
|
+
Readline.completion_case_fold = true
|
14
|
+
Readline.completion_case_fold.should == true
|
15
|
+
Readline.completion_case_fold = false
|
16
|
+
Readline.completion_case_fold.should == false
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
process_is_foreground do
|
2
|
+
with_feature :readline do
|
3
|
+
require 'readline'
|
4
|
+
|
5
|
+
describe "Readline.completion_proc" do
|
6
|
+
it "returns nil" do
|
7
|
+
Readline.completion_proc.should be_nil
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "Readline.completion_proc=" do
|
12
|
+
it "returns the passed Proc" do
|
13
|
+
proc = Proc.new do |e|
|
14
|
+
end
|
15
|
+
Readline.completion_proc = proc
|
16
|
+
Readline.completion_proc.should == proc
|
17
|
+
end
|
18
|
+
|
19
|
+
it "returns an ArgumentError if not given an Proc or #call" do
|
20
|
+
lambda { Readline.completion_proc = "test" }.should raise_error(ArgumentError)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
process_is_foreground do
|
2
|
+
with_feature :readline do
|
3
|
+
require 'readline'
|
4
|
+
|
5
|
+
# Note: additional specs for HISTORY are in 'history' subdir.
|
6
|
+
describe "Readline::HISTORY" do
|
7
|
+
it "is defined" do
|
8
|
+
Readline.const_defined?(:HISTORY).should == true
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "Readline::VERSION" do
|
13
|
+
it "is defined and is a non-empty String" do
|
14
|
+
Readline.const_defined?(:VERSION).should == true
|
15
|
+
Readline::VERSION.should be_kind_of(String)
|
16
|
+
Readline::VERSION.should_not be_empty
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
process_is_foreground do
|
2
|
+
with_feature :readline do
|
3
|
+
require 'readline'
|
4
|
+
|
5
|
+
describe "Readline.filename_quote_characters" do
|
6
|
+
it "returns nil" do
|
7
|
+
Readline.filename_quote_characters.should be_nil
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "Readline.filename_quote_characters=" do
|
12
|
+
it "returns the passed string" do
|
13
|
+
Readline.filename_quote_characters = "test"
|
14
|
+
Readline.filename_quote_characters.should == "test"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
process_is_foreground do
|
2
|
+
with_feature :readline do
|
3
|
+
require 'readline'
|
4
|
+
|
5
|
+
describe "Readline::HISTORY.<<" do
|
6
|
+
it "appends the given Object to the history" do
|
7
|
+
Readline::HISTORY << "1"
|
8
|
+
Readline::HISTORY.size.should == 1
|
9
|
+
|
10
|
+
Readline::HISTORY << "2"
|
11
|
+
Readline::HISTORY.size.should == 2
|
12
|
+
|
13
|
+
Readline::HISTORY.pop.should == "2"
|
14
|
+
Readline::HISTORY.pop.should == "1"
|
15
|
+
end
|
16
|
+
|
17
|
+
it "tries to convert the passed Object to a String using #to_str" do
|
18
|
+
obj = mock("Converted to String")
|
19
|
+
obj.should_receive(:to_str).and_return("converted")
|
20
|
+
|
21
|
+
Readline::HISTORY << obj
|
22
|
+
Readline::HISTORY.pop.should == "converted"
|
23
|
+
end
|
24
|
+
|
25
|
+
it "raises a TypeError when the passed Object can't be converted to a String" do
|
26
|
+
lambda { Readline::HISTORY << mock("Object") }.should raise_error(TypeError)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
process_is_foreground do
|
2
|
+
with_feature :readline do
|
3
|
+
require 'readline'
|
4
|
+
|
5
|
+
describe "Readline::HISTORY.delete_at" do
|
6
|
+
it "deletes and returns the history entry at the specified index" do
|
7
|
+
Readline::HISTORY.push("1", "2", "3")
|
8
|
+
|
9
|
+
Readline::HISTORY.delete_at(1).should == "2"
|
10
|
+
Readline::HISTORY.size.should == 2
|
11
|
+
|
12
|
+
Readline::HISTORY.delete_at(1).should == "3"
|
13
|
+
Readline::HISTORY.size.should == 1
|
14
|
+
|
15
|
+
Readline::HISTORY.delete_at(0).should == "1"
|
16
|
+
Readline::HISTORY.size.should == 0
|
17
|
+
|
18
|
+
|
19
|
+
Readline::HISTORY.push("1", "2", "3", "4")
|
20
|
+
|
21
|
+
Readline::HISTORY.delete_at(-2).should == "3"
|
22
|
+
Readline::HISTORY.size.should == 3
|
23
|
+
|
24
|
+
Readline::HISTORY.delete_at(-2).should == "2"
|
25
|
+
Readline::HISTORY.size.should == 2
|
26
|
+
|
27
|
+
Readline::HISTORY.delete_at(0).should == "1"
|
28
|
+
Readline::HISTORY.size.should == 1
|
29
|
+
|
30
|
+
Readline::HISTORY.delete_at(0).should == "4"
|
31
|
+
Readline::HISTORY.size.should == 0
|
32
|
+
end
|
33
|
+
|
34
|
+
it "raises an IndexError when the given index is greater than the history size" do
|
35
|
+
lambda { Readline::HISTORY.delete_at(10) }.should raise_error(IndexError)
|
36
|
+
lambda { Readline::HISTORY.delete_at(-10) }.should raise_error(IndexError)
|
37
|
+
end
|
38
|
+
|
39
|
+
it "taints the returned strings" do
|
40
|
+
Readline::HISTORY.push("1", "2", "3")
|
41
|
+
Readline::HISTORY.delete_at(0).tainted?.should be_true
|
42
|
+
Readline::HISTORY.delete_at(0).tainted?.should be_true
|
43
|
+
Readline::HISTORY.delete_at(0).tainted?.should be_true
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
process_is_foreground do
|
2
|
+
with_feature :readline do
|
3
|
+
require 'readline'
|
4
|
+
|
5
|
+
describe "Readline::HISTORY.each" do
|
6
|
+
before(:each) do
|
7
|
+
Readline::HISTORY.push("1", "2", "3")
|
8
|
+
end
|
9
|
+
|
10
|
+
after(:each) do
|
11
|
+
Readline::HISTORY.pop
|
12
|
+
Readline::HISTORY.pop
|
13
|
+
Readline::HISTORY.pop
|
14
|
+
end
|
15
|
+
|
16
|
+
it "yields each item in the history" do
|
17
|
+
result = []
|
18
|
+
Readline::HISTORY.each do |x|
|
19
|
+
result << x
|
20
|
+
end
|
21
|
+
result.should == ["1", "2", "3"]
|
22
|
+
end
|
23
|
+
|
24
|
+
it "yields tainted Objects" do
|
25
|
+
Readline::HISTORY.each do |x|
|
26
|
+
x.tainted?.should be_true
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
process_is_foreground do
|
2
|
+
with_feature :readline do
|
3
|
+
require 'readline'
|
4
|
+
|
5
|
+
describe "Readline::HISTORY.[]" do
|
6
|
+
before(:each) do
|
7
|
+
Readline::HISTORY.push("1", "2", "3")
|
8
|
+
end
|
9
|
+
|
10
|
+
after(:each) do
|
11
|
+
Readline::HISTORY.pop
|
12
|
+
Readline::HISTORY.pop
|
13
|
+
Readline::HISTORY.pop
|
14
|
+
end
|
15
|
+
|
16
|
+
it "returns tainted objects" do
|
17
|
+
Readline::HISTORY[0].tainted?.should be_true
|
18
|
+
Readline::HISTORY[1].tainted?.should be_true
|
19
|
+
end
|
20
|
+
|
21
|
+
it "returns the history item at the passed index" do
|
22
|
+
Readline::HISTORY[0].should == "1"
|
23
|
+
Readline::HISTORY[1].should == "2"
|
24
|
+
Readline::HISTORY[2].should == "3"
|
25
|
+
|
26
|
+
Readline::HISTORY[-1].should == "3"
|
27
|
+
Readline::HISTORY[-2].should == "2"
|
28
|
+
Readline::HISTORY[-3].should == "1"
|
29
|
+
end
|
30
|
+
|
31
|
+
it "raises an IndexError when there is no item at the passed index" do
|
32
|
+
lambda { Readline::HISTORY[-10] }.should raise_error(IndexError)
|
33
|
+
lambda { Readline::HISTORY[-9] }.should raise_error(IndexError)
|
34
|
+
lambda { Readline::HISTORY[-8] }.should raise_error(IndexError)
|
35
|
+
|
36
|
+
lambda { Readline::HISTORY[8] }.should raise_error(IndexError)
|
37
|
+
lambda { Readline::HISTORY[9] }.should raise_error(IndexError)
|
38
|
+
lambda { Readline::HISTORY[10] }.should raise_error(IndexError)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
process_is_foreground do
|
2
|
+
with_feature :readline do
|
3
|
+
require 'readline'
|
4
|
+
|
5
|
+
describe "Readline::HISTORY.[]=" do
|
6
|
+
before(:each) do
|
7
|
+
Readline::HISTORY.push("1", "2", "3")
|
8
|
+
end
|
9
|
+
|
10
|
+
after(:each) do
|
11
|
+
Readline::HISTORY.pop
|
12
|
+
Readline::HISTORY.pop
|
13
|
+
Readline::HISTORY.pop
|
14
|
+
end
|
15
|
+
|
16
|
+
it "returns the new value for the passed index" do
|
17
|
+
(Readline::HISTORY[1] = "second test").should == "second test"
|
18
|
+
end
|
19
|
+
|
20
|
+
it "raises an IndexError when there is no item at the passed positive index" do
|
21
|
+
lambda { Readline::HISTORY[10] = "test" }.should raise_error(IndexError)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "sets the item at the given index" do
|
25
|
+
Readline::HISTORY[0] = "test"
|
26
|
+
Readline::HISTORY[0].should == "test"
|
27
|
+
|
28
|
+
Readline::HISTORY[1] = "second test"
|
29
|
+
Readline::HISTORY[1].should == "second test"
|
30
|
+
end
|
31
|
+
|
32
|
+
it "raises an IndexError when there is no item at the passed negative index" do
|
33
|
+
lambda { Readline::HISTORY[10] = "test" }.should raise_error(IndexError)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|