readline-ffi 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/Gemfile +3 -0
- data/LICENSE +22 -0
- data/README.rdoc +9 -0
- data/Rakefile +37 -0
- data/ext/.gitignore +0 -0
- data/lib/ffi/readline.rb +71 -0
- data/lib/readline-ffi/version.rb +3 -0
- data/lib/readline.rb +300 -0
- data/readline-ffi.gemspec +25 -0
- data/spec/default.mspec +3 -0
- data/spec/library/readline/basic_quote_characters_spec.rb +20 -0
- data/spec/library/readline/basic_word_break_characters_spec.rb +20 -0
- data/spec/library/readline/completer_quote_characters_spec.rb +20 -0
- data/spec/library/readline/completer_word_break_characters_spec.rb +20 -0
- data/spec/library/readline/completion_append_character_spec.rb +20 -0
- data/spec/library/readline/completion_case_fold_spec.rb +22 -0
- data/spec/library/readline/completion_proc_spec.rb +26 -0
- data/spec/library/readline/constants_spec.rb +22 -0
- data/spec/library/readline/emacs_editing_mode_spec.rb +13 -0
- data/spec/library/readline/filename_quote_characters_spec.rb +20 -0
- data/spec/library/readline/history/append_spec.rb +32 -0
- data/spec/library/readline/history/delete_at_spec.rb +49 -0
- data/spec/library/readline/history/each_spec.rb +33 -0
- data/spec/library/readline/history/element_reference_spec.rb +44 -0
- data/spec/library/readline/history/element_set_spec.rb +39 -0
- data/spec/library/readline/history/empty_spec.rb +17 -0
- data/spec/library/readline/history/history_spec.rb +13 -0
- data/spec/library/readline/history/length_spec.rb +13 -0
- data/spec/library/readline/history/pop_spec.rb +34 -0
- data/spec/library/readline/history/push_spec.rb +30 -0
- data/spec/library/readline/history/shared/size.rb +14 -0
- data/spec/library/readline/history/shift_spec.rb +34 -0
- data/spec/library/readline/history/size_spec.rb +13 -0
- data/spec/library/readline/history/to_s_spec.rb +13 -0
- data/spec/library/readline/readline_spec.rb +38 -0
- data/spec/library/readline/vi_editing_mode_spec.rb +13 -0
- data/spec/spec.opts +4 -0
- data/spec/spec_helper.rb +53 -0
- data/test/test_readline.rb +69 -0
- metadata +106 -0
@@ -0,0 +1,17 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
2
|
+
|
3
|
+
process_is_foreground do
|
4
|
+
|
5
|
+
not_supported_on :ironruby do
|
6
|
+
require 'readline'
|
7
|
+
describe "Readline::HISTORY.empty?" do
|
8
|
+
it "returns true when the history is empty" do
|
9
|
+
Readline::HISTORY.should be_empty
|
10
|
+
Readline::HISTORY.push("test")
|
11
|
+
Readline::HISTORY.should_not be_empty
|
12
|
+
Readline::HISTORY.pop
|
13
|
+
Readline::HISTORY.should be_empty
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
2
|
+
|
3
|
+
process_is_foreground do
|
4
|
+
|
5
|
+
not_supported_on :ironruby do
|
6
|
+
require 'readline'
|
7
|
+
describe "Readline::HISTORY" do
|
8
|
+
it "is extended with the Enumerable module" do
|
9
|
+
Readline::HISTORY.should be_kind_of(Enumerable)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
2
|
+
|
3
|
+
process_is_foreground do
|
4
|
+
|
5
|
+
not_supported_on :ironruby do
|
6
|
+
require 'readline'
|
7
|
+
require File.dirname(__FILE__) + '/shared/size'
|
8
|
+
|
9
|
+
describe "Readline::HISTORY.length" do
|
10
|
+
it_behaves_like :readline_history_size, :length
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
2
|
+
|
3
|
+
process_is_foreground do
|
4
|
+
|
5
|
+
not_supported_on :ironruby do
|
6
|
+
require 'readline'
|
7
|
+
describe "Readline::HISTORY.pop" do
|
8
|
+
it "returns nil when the history is empty" do
|
9
|
+
Readline::HISTORY.pop.should be_nil
|
10
|
+
end
|
11
|
+
|
12
|
+
it "returns and removes the last item from the history" do
|
13
|
+
Readline::HISTORY.push("1", "2", "3")
|
14
|
+
Readline::HISTORY.size.should == 3
|
15
|
+
|
16
|
+
Readline::HISTORY.pop.should == "3"
|
17
|
+
Readline::HISTORY.size.should == 2
|
18
|
+
|
19
|
+
Readline::HISTORY.pop.should == "2"
|
20
|
+
Readline::HISTORY.size.should == 1
|
21
|
+
|
22
|
+
Readline::HISTORY.pop.should == "1"
|
23
|
+
Readline::HISTORY.size.should == 0
|
24
|
+
end
|
25
|
+
|
26
|
+
it "taints the returned strings" do
|
27
|
+
Readline::HISTORY.push("1", "2", "3")
|
28
|
+
Readline::HISTORY.pop.tainted?.should be_true
|
29
|
+
Readline::HISTORY.pop.tainted?.should be_true
|
30
|
+
Readline::HISTORY.pop.tainted?.should be_true
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
2
|
+
|
3
|
+
process_is_foreground do
|
4
|
+
|
5
|
+
not_supported_on :ironruby do
|
6
|
+
require 'readline'
|
7
|
+
describe "Readline::HISTORY.push" do
|
8
|
+
it "pushes all passed Objects into the history" do
|
9
|
+
Readline::HISTORY.push("1", "2", "3")
|
10
|
+
Readline::HISTORY.size.should == 3
|
11
|
+
|
12
|
+
Readline::HISTORY.pop.should == "3"
|
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.push(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.push(mock("Object")) }.should raise_error(TypeError)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
describe :readline_history_size, :shared => true do
|
2
|
+
it "returns the size of the history" do
|
3
|
+
Readline::HISTORY.send(@method).should == 0
|
4
|
+
Readline::HISTORY.push("1", "2", "")
|
5
|
+
Readline::HISTORY.send(@method).should == 3
|
6
|
+
|
7
|
+
Readline::HISTORY.pop
|
8
|
+
Readline::HISTORY.send(@method).should == 2
|
9
|
+
|
10
|
+
Readline::HISTORY.pop
|
11
|
+
Readline::HISTORY.pop
|
12
|
+
Readline::HISTORY.send(@method).should == 0
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
2
|
+
|
3
|
+
process_is_foreground do
|
4
|
+
|
5
|
+
not_supported_on :ironruby do
|
6
|
+
require 'readline'
|
7
|
+
describe "Readline::HISTORY.shift" do
|
8
|
+
it "returns nil when the history is empty" do
|
9
|
+
Readline::HISTORY.shift.should be_nil
|
10
|
+
end
|
11
|
+
|
12
|
+
it "returns and removes the first item from the history" do
|
13
|
+
Readline::HISTORY.push("1", "2", "3")
|
14
|
+
Readline::HISTORY.size.should == 3
|
15
|
+
|
16
|
+
Readline::HISTORY.shift.should == "1"
|
17
|
+
Readline::HISTORY.size.should == 2
|
18
|
+
|
19
|
+
Readline::HISTORY.shift.should == "2"
|
20
|
+
Readline::HISTORY.size.should == 1
|
21
|
+
|
22
|
+
Readline::HISTORY.shift.should == "3"
|
23
|
+
Readline::HISTORY.size.should == 0
|
24
|
+
end
|
25
|
+
|
26
|
+
it "taints the returned strings" do
|
27
|
+
Readline::HISTORY.push("1", "2", "3")
|
28
|
+
Readline::HISTORY.shift.tainted?.should be_true
|
29
|
+
Readline::HISTORY.shift.tainted?.should be_true
|
30
|
+
Readline::HISTORY.shift.tainted?.should be_true
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
2
|
+
|
3
|
+
process_is_foreground do
|
4
|
+
|
5
|
+
not_supported_on :ironruby do
|
6
|
+
require 'readline'
|
7
|
+
require File.dirname(__FILE__) + '/shared/size'
|
8
|
+
|
9
|
+
describe "Readline::HISTORY.size" do
|
10
|
+
it_behaves_like :readline_history_size, :size
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
2
|
+
|
3
|
+
process_is_foreground do
|
4
|
+
|
5
|
+
not_supported_on :ironruby do
|
6
|
+
require 'readline'
|
7
|
+
describe "Readline::HISTORY.to_s" do
|
8
|
+
it "returns 'HISTORY'" do
|
9
|
+
Readline::HISTORY.to_s.should == "HISTORY"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
|
3
|
+
process_is_foreground do
|
4
|
+
|
5
|
+
not_supported_on :ironruby, :jruby do
|
6
|
+
require 'readline'
|
7
|
+
|
8
|
+
describe "Readline.readline" do
|
9
|
+
before :each do
|
10
|
+
@file = tmp('readline')
|
11
|
+
File.open(@file, 'w') do |file|
|
12
|
+
file.puts "test\n"
|
13
|
+
end
|
14
|
+
@stdin_back = STDIN.dup
|
15
|
+
@stdout_back = STDOUT.dup
|
16
|
+
STDIN.reopen(@file, 'r')
|
17
|
+
STDOUT.reopen("/dev/null")
|
18
|
+
end
|
19
|
+
|
20
|
+
after :each do
|
21
|
+
File.delete(@file) if File.exists?(@file)
|
22
|
+
STDIN.reopen(@stdin_back)
|
23
|
+
STDOUT.reopen(@stdout_back)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "returns the input string" do
|
27
|
+
Readline.readline.should == "test"
|
28
|
+
end
|
29
|
+
|
30
|
+
# ruby_version_is "" ... "1.8" do
|
31
|
+
# Exclude MRI 1.9.1.p0 because it segfaults.
|
32
|
+
it "taints the returned strings" do
|
33
|
+
Readline.readline.tainted?.should be_true
|
34
|
+
end
|
35
|
+
#end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
|
3
|
+
process_is_foreground do
|
4
|
+
|
5
|
+
not_supported_on :ironruby do
|
6
|
+
require 'readline'
|
7
|
+
describe "Readline.vi_editing_mode" do
|
8
|
+
it "returns nil" do
|
9
|
+
Readline.vi_editing_mode.should be_nil
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/spec/spec.opts
ADDED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
if RUBY_PLATFORM == "java"
|
2
|
+
$LOAD_PATH.insert(0, "./lib")
|
3
|
+
end
|
4
|
+
|
5
|
+
unless ENV['MSPEC_RUNNER']
|
6
|
+
begin
|
7
|
+
require "pp"
|
8
|
+
require 'mspec/version'
|
9
|
+
require 'mspec/helpers'
|
10
|
+
require 'mspec/guards'
|
11
|
+
require 'mspec/runner/shared'
|
12
|
+
require 'mspec/matchers/be_ancestor_of'
|
13
|
+
require 'mspec/matchers/output'
|
14
|
+
require 'mspec/matchers/output_to_fd'
|
15
|
+
require 'mspec/matchers/complain'
|
16
|
+
require 'mspec/matchers/equal_element'
|
17
|
+
require 'mspec/matchers/equal_utf16'
|
18
|
+
require 'mspec/matchers/match_yaml'
|
19
|
+
|
20
|
+
# Code to setup HOME directory correctly on Windows
|
21
|
+
# This duplicates Ruby 1.9 semantics for defining HOME
|
22
|
+
platform_is :windows do
|
23
|
+
if ENV['HOME']
|
24
|
+
ENV['HOME'] = ENV['HOME'].tr '\\', '/'
|
25
|
+
elsif ENV['HOMEDIR'] && ENV['HOMEDRIVE']
|
26
|
+
ENV['HOME'] = File.join(ENV['HOMEDRIVE'], ENV['HOMEDIR'])
|
27
|
+
elsif ENV['HOMEDIR']
|
28
|
+
ENV['HOME'] = ENV['HOMEDIR']
|
29
|
+
elsif ENV['HOMEDRIVE']
|
30
|
+
ENV['HOME'] = ENV['HOMEDRIVE']
|
31
|
+
elsif ENV['USERPROFILE']
|
32
|
+
ENV['HOME'] = ENV['USERPROFILE']
|
33
|
+
else
|
34
|
+
puts "No suitable HOME environment found. This means that all of"
|
35
|
+
puts "HOME, HOMEDIR, HOMEDRIVE, and USERPROFILE are not set"
|
36
|
+
exit 1
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
TOLERANCE = 0.00003 unless Object.const_defined?(:TOLERANCE)
|
41
|
+
rescue LoadError
|
42
|
+
puts "Please install the MSpec gem to run the specs."
|
43
|
+
exit 1
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
minimum_version = "1.5.10"
|
48
|
+
unless MSpec::VERSION >= minimum_version
|
49
|
+
puts "Please install MSpec version >= #{minimum_version} to run the specs"
|
50
|
+
exit 1
|
51
|
+
end
|
52
|
+
|
53
|
+
$VERBOSE = nil unless ENV['OUTPUT_WARNINGS']
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require File.dirname(__FILE__) + "/../lib/readline"
|
3
|
+
|
4
|
+
class TestReadline < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_completion_proc_error
|
7
|
+
assert_raise(ArgumentError, "Need ArgumentError exception") { Readline.completion_proc = nil }
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_library_version
|
11
|
+
assert_match(/\(FFI wrapper \d\.\d\.\d\)/, Readline::VERSION)
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_implimented_methods
|
15
|
+
assert_nil(Readline.completer_word_break_characters)
|
16
|
+
assert(Readline.completer_word_break_characters = "test")
|
17
|
+
assert_equal("\"'", Readline.basic_quote_characters)
|
18
|
+
assert(Readline.basic_quote_characters = "test")
|
19
|
+
assert_nil(Readline.completer_quote_characters)
|
20
|
+
assert(Readline.completer_quote_characters = "test")
|
21
|
+
assert_nil(Readline.filename_quote_characters)
|
22
|
+
assert(Readline.filename_quote_characters = "test")
|
23
|
+
assert_equal(" \t\n\"\\'`@$><=;|&{(", Readline.basic_word_break_characters)
|
24
|
+
assert(Readline.basic_word_break_characters = "test")
|
25
|
+
assert_equal(" ", Readline.completion_append_character)
|
26
|
+
assert(Readline.completion_append_character = "_")
|
27
|
+
assert_nil(Readline.vi_editing_mode)
|
28
|
+
assert_nil(Readline.emacs_editing_mode)
|
29
|
+
assert_nil(Readline.completion_proc)
|
30
|
+
assert_equal(0, Readline.refresh_line)
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_history
|
34
|
+
his = Readline::HISTORY
|
35
|
+
assert_equal("HISTORY", his.to_s)
|
36
|
+
assert_raise(IndexError, "need index error") { his[0] }
|
37
|
+
|
38
|
+
assert(his.empty?)
|
39
|
+
assert_equal("HISTORY", (his << "hist1").to_s)
|
40
|
+
assert_equal(false, his.empty?)
|
41
|
+
assert_equal("hist1", his.pop)
|
42
|
+
|
43
|
+
assert_equal("HISTORY", (his << "hist1").to_s)
|
44
|
+
assert_equal("HISTORY", (his << "hist2").to_s)
|
45
|
+
assert_equal("hist1", his.shift)
|
46
|
+
assert_equal("hist2", his.shift)
|
47
|
+
|
48
|
+
assert_equal("HISTORY", (his << "hist1").to_s)
|
49
|
+
assert_equal("hist1", his.delete_at(0))
|
50
|
+
assert(his.empty?)
|
51
|
+
end
|
52
|
+
|
53
|
+
# def test_completion
|
54
|
+
# words = %w[foo foobar foobaz]
|
55
|
+
# Readline.completion_proc = proc do |word|
|
56
|
+
# words.grep(/\A#{Regexp.quote word}/)
|
57
|
+
# end
|
58
|
+
# while buf = Readline.readline("> ")
|
59
|
+
# p buf
|
60
|
+
# end
|
61
|
+
# end
|
62
|
+
|
63
|
+
# def test_completion2
|
64
|
+
# Readline.completion_proc = Readline::FILENAME_COMPLETION_PROC
|
65
|
+
# while buf = Readline.readline("> ")
|
66
|
+
# p buf
|
67
|
+
# end
|
68
|
+
# end
|
69
|
+
end
|
metadata
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: readline-ffi
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.0.2
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Koichiro Ohba
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2011-08-29 00:00:00 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: ffi
|
17
|
+
prerelease: false
|
18
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
19
|
+
none: false
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 1.0.0
|
24
|
+
type: :runtime
|
25
|
+
version_requirements: *id001
|
26
|
+
description: Readline-ffi is a wrapper library of Readline, using Ruby-FFI.
|
27
|
+
email: koichiro@meadowy.org
|
28
|
+
executables: []
|
29
|
+
|
30
|
+
extensions: []
|
31
|
+
|
32
|
+
extra_rdoc_files:
|
33
|
+
- README.rdoc
|
34
|
+
files:
|
35
|
+
- .gitignore
|
36
|
+
- Gemfile
|
37
|
+
- LICENSE
|
38
|
+
- README.rdoc
|
39
|
+
- Rakefile
|
40
|
+
- ext/.gitignore
|
41
|
+
- lib/ffi/readline.rb
|
42
|
+
- lib/readline-ffi/version.rb
|
43
|
+
- lib/readline.rb
|
44
|
+
- readline-ffi.gemspec
|
45
|
+
- spec/default.mspec
|
46
|
+
- spec/library/readline/basic_quote_characters_spec.rb
|
47
|
+
- spec/library/readline/basic_word_break_characters_spec.rb
|
48
|
+
- spec/library/readline/completer_quote_characters_spec.rb
|
49
|
+
- spec/library/readline/completer_word_break_characters_spec.rb
|
50
|
+
- spec/library/readline/completion_append_character_spec.rb
|
51
|
+
- spec/library/readline/completion_case_fold_spec.rb
|
52
|
+
- spec/library/readline/completion_proc_spec.rb
|
53
|
+
- spec/library/readline/constants_spec.rb
|
54
|
+
- spec/library/readline/emacs_editing_mode_spec.rb
|
55
|
+
- spec/library/readline/filename_quote_characters_spec.rb
|
56
|
+
- spec/library/readline/history/append_spec.rb
|
57
|
+
- spec/library/readline/history/delete_at_spec.rb
|
58
|
+
- spec/library/readline/history/each_spec.rb
|
59
|
+
- spec/library/readline/history/element_reference_spec.rb
|
60
|
+
- spec/library/readline/history/element_set_spec.rb
|
61
|
+
- spec/library/readline/history/empty_spec.rb
|
62
|
+
- spec/library/readline/history/history_spec.rb
|
63
|
+
- spec/library/readline/history/length_spec.rb
|
64
|
+
- spec/library/readline/history/pop_spec.rb
|
65
|
+
- spec/library/readline/history/push_spec.rb
|
66
|
+
- spec/library/readline/history/shared/size.rb
|
67
|
+
- spec/library/readline/history/shift_spec.rb
|
68
|
+
- spec/library/readline/history/size_spec.rb
|
69
|
+
- spec/library/readline/history/to_s_spec.rb
|
70
|
+
- spec/library/readline/readline_spec.rb
|
71
|
+
- spec/library/readline/vi_editing_mode_spec.rb
|
72
|
+
- spec/spec.opts
|
73
|
+
- spec/spec_helper.rb
|
74
|
+
- test/test_readline.rb
|
75
|
+
homepage: https://github.com/koichiro/readline-ffi
|
76
|
+
licenses: []
|
77
|
+
|
78
|
+
post_install_message:
|
79
|
+
rdoc_options:
|
80
|
+
- --exclude
|
81
|
+
- ext
|
82
|
+
- --main
|
83
|
+
- README
|
84
|
+
require_paths:
|
85
|
+
- lib
|
86
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
87
|
+
none: false
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: 1.8.7
|
92
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
93
|
+
none: false
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: "0"
|
98
|
+
requirements: []
|
99
|
+
|
100
|
+
rubyforge_project: readline-ffi
|
101
|
+
rubygems_version: 1.8.9
|
102
|
+
signing_key:
|
103
|
+
specification_version: 3
|
104
|
+
summary: Readline-ffi is a wrapper library of Readline, using Ruby-FFI.
|
105
|
+
test_files: []
|
106
|
+
|