rib 0.1.0 → 0.9.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.
- data/.gitignore +0 -4
- data/CHANGES.md +6 -0
- data/README +107 -113
- data/README.md +107 -113
- data/Rakefile +5 -3
- data/TODO.md +6 -0
- data/bin/rib-all +5 -0
- data/bin/rib-auto +9 -0
- data/bin/rib-min +5 -0
- data/bin/rib-rails +9 -0
- data/bin/rib-ramaze +9 -0
- data/lib/rib.rb +70 -6
- data/lib/rib/all.rb +0 -1
- data/lib/rib/api.rb +60 -64
- data/lib/rib/app/auto.rb +25 -0
- data/lib/rib/app/rails.rb +41 -0
- data/lib/rib/app/ramaze.rb +25 -0
- data/lib/rib/config.rb +3 -0
- data/lib/rib/core.rb +13 -1
- data/lib/rib/core/completion.rb +15 -3
- data/lib/rib/core/history.rb +56 -0
- data/lib/rib/core/multiline.rb +104 -0
- data/lib/rib/core/readline.rb +3 -1
- data/lib/rib/core/squeeze_history.rb +45 -0
- data/lib/rib/core/strip_backtrace.rb +45 -0
- data/lib/rib/core/underscore.rb +17 -8
- data/lib/rib/debug.rb +2 -1
- data/lib/rib/dep/hirb.rb +24 -0
- data/lib/rib/more.rb +4 -3
- data/lib/rib/more/anchor.rb +85 -0
- data/lib/rib/more/color.rb +44 -43
- data/lib/rib/{zore → more}/edit.rb +3 -3
- data/lib/rib/more/multiline_history.rb +24 -12
- data/lib/rib/more/multiline_history_file.rb +7 -3
- data/lib/rib/plugin.rb +2 -4
- data/lib/rib/runner.rb +84 -49
- data/lib/rib/shell.rb +4 -2
- data/lib/rib/test.rb +55 -2
- data/lib/rib/test/multiline.rb +140 -0
- data/lib/rib/version.rb +1 -1
- data/rib.gemspec +54 -22
- data/screenshot.png +0 -0
- data/task/gemgem.rb +3 -1
- data/test/core/{test_history_file.rb → test_history.rb} +29 -19
- data/test/core/test_multiline.rb +22 -0
- data/test/core/test_readline.rb +13 -8
- data/test/{more → core}/test_squeeze_history.rb +24 -18
- data/test/core/test_underscore.rb +32 -21
- data/test/more/test_multiline_history.rb +42 -0
- data/test/test_shell.rb +13 -8
- metadata +72 -27
- data/2011-02-28.md +0 -203
- data/CHANGES +0 -86
- data/TODO +0 -6
- data/lib/rib/core/history_file.rb +0 -38
- data/lib/rib/more/multiline.rb +0 -77
- data/lib/rib/more/squeeze_history.rb +0 -37
- data/lib/rib/more/strip_backtrace.rb +0 -43
- data/lib/rib/zore.rb +0 -3
- data/lib/rib/zore/anchor.rb +0 -69
@@ -0,0 +1,22 @@
|
|
1
|
+
|
2
|
+
require 'rib/test'
|
3
|
+
require 'rib/test/multiline'
|
4
|
+
require 'rib/core/multiline'
|
5
|
+
|
6
|
+
describe Rib::Multiline do
|
7
|
+
behaves_like :rib
|
8
|
+
behaves_like :setup_multiline
|
9
|
+
|
10
|
+
def check str, err=nil
|
11
|
+
lines = str.split("\n")
|
12
|
+
lines[0...-1].each{ |line|
|
13
|
+
input(line)
|
14
|
+
@shell.loop_once
|
15
|
+
}
|
16
|
+
input_done(lines.last, err)
|
17
|
+
end
|
18
|
+
|
19
|
+
test_for Rib::Multiline do
|
20
|
+
behaves_like :multiline
|
21
|
+
end
|
22
|
+
end
|
data/test/core/test_readline.rb
CHANGED
@@ -2,14 +2,7 @@
|
|
2
2
|
require 'rib/test'
|
3
3
|
require 'rib/core/readline'
|
4
4
|
|
5
|
-
|
6
|
-
behaves_like :rib
|
7
|
-
|
8
|
-
before do
|
9
|
-
Rib::Readline.enable
|
10
|
-
@shell = Rib::Shell.new.before_loop
|
11
|
-
end
|
12
|
-
|
5
|
+
shared :readline do
|
13
6
|
should '#before_loop set @history' do
|
14
7
|
@shell.history.should.eq Readline::HISTORY
|
15
8
|
end
|
@@ -19,3 +12,15 @@ describe Rib::Readline do
|
|
19
12
|
@shell.get_input.should.eq 'ok'
|
20
13
|
end
|
21
14
|
end
|
15
|
+
|
16
|
+
describe Rib::Readline do
|
17
|
+
behaves_like :rib
|
18
|
+
|
19
|
+
before do
|
20
|
+
@shell = Rib::Shell.new.before_loop
|
21
|
+
end
|
22
|
+
|
23
|
+
test_for Rib::Readline do
|
24
|
+
behaves_like :readline
|
25
|
+
end
|
26
|
+
end
|
@@ -1,22 +1,8 @@
|
|
1
1
|
|
2
2
|
require 'rib/test'
|
3
|
-
require 'rib/
|
4
|
-
|
5
|
-
describe Rib::SqueezeHistory do
|
6
|
-
behaves_like :rib
|
7
|
-
|
8
|
-
before do
|
9
|
-
Rib::HistoryFile.enable
|
10
|
-
Rib::SqueezeHistory.enable
|
11
|
-
@history = "/tmp/test_rib_#{rand}"
|
12
|
-
@shell = Rib::Shell.new(:history_file => @history).before_loop
|
13
|
-
@input = %w[foo bar bar foo bar]
|
14
|
-
end
|
15
|
-
|
16
|
-
after do
|
17
|
-
FileUtils.rm_f(@history)
|
18
|
-
end
|
3
|
+
require 'rib/core/squeeze_history'
|
19
4
|
|
5
|
+
shared :squeeze_history do
|
20
6
|
should 'after_loop saves squeezed history' do
|
21
7
|
@shell.history.push(*@input)
|
22
8
|
@shell.after_loop
|
@@ -26,7 +12,7 @@ describe Rib::SqueezeHistory do
|
|
26
12
|
should 'loop_once squeeze history' do
|
27
13
|
times = @input.size
|
28
14
|
stub(@shell).get_input{ (@shell.history << "'#{@input.shift}'")[-1] }
|
29
|
-
stub(@shell).print_result
|
15
|
+
stub(@shell).print_result
|
30
16
|
times.times{ @shell.loop_once }
|
31
17
|
@shell.history.to_a.should.eq %w[foo bar foo bar].map{ |i| "'#{i}'" }
|
32
18
|
end
|
@@ -36,8 +22,28 @@ describe Rib::SqueezeHistory do
|
|
36
22
|
times = @input.size
|
37
23
|
input = @input.dup
|
38
24
|
stub(@shell).get_input{ (@shell.history << "'#{@input.shift}'")[-1] }
|
39
|
-
stub(@shell).print_result
|
25
|
+
stub(@shell).print_result
|
40
26
|
times.times{ @shell.loop_once }
|
41
27
|
@shell.history.to_a.should.eq input.map{ |i| "'#{i}'" }
|
28
|
+
Rib::SqueezeHistory.enable
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe Rib::SqueezeHistory do
|
33
|
+
behaves_like :rib
|
34
|
+
|
35
|
+
before do
|
36
|
+
@history = "/tmp/test_rib_#{rand}"
|
37
|
+
@shell = Rib::Shell.new(:history_file => @history).before_loop
|
38
|
+
@input = %w[foo bar bar foo bar]
|
39
|
+
@shell.history.clear
|
40
|
+
end
|
41
|
+
|
42
|
+
after do
|
43
|
+
FileUtils.rm_f(@history)
|
44
|
+
end
|
45
|
+
|
46
|
+
test_for Rib::History, Rib::SqueezeHistory do
|
47
|
+
behaves_like :squeeze_history
|
42
48
|
end
|
43
49
|
end
|
@@ -2,23 +2,15 @@
|
|
2
2
|
require 'rib/test'
|
3
3
|
require 'rib/core/underscore'
|
4
4
|
|
5
|
-
|
6
|
-
behaves_like :rib
|
7
|
-
|
8
|
-
before do
|
9
|
-
Rib::Underscore.enable
|
10
|
-
end
|
11
|
-
|
12
|
-
def setup bound=Object.new
|
13
|
-
@shell = Rib::Shell.new(
|
14
|
-
:binding => bound.instance_eval{binding}).before_loop
|
15
|
-
end
|
16
|
-
|
5
|
+
shared :underscore do
|
17
6
|
should 'set _' do
|
18
7
|
setup
|
19
|
-
@shell.
|
20
|
-
@shell.
|
21
|
-
@shell.
|
8
|
+
mock(@shell).get_input{'_'}
|
9
|
+
mock(@shell).get_input{'10**2'}
|
10
|
+
mock(@shell).get_input{'_'}
|
11
|
+
@shell.loop_once.should.eq [nil, nil]
|
12
|
+
@shell.loop_once
|
13
|
+
@shell.loop_once.should.eq [100, nil]
|
22
14
|
end
|
23
15
|
|
24
16
|
should 'not set _ if already there' do
|
@@ -27,15 +19,34 @@ describe Rib::Underscore do
|
|
27
19
|
'hey'
|
28
20
|
end
|
29
21
|
setup(bound)
|
30
|
-
@shell.
|
31
|
-
@shell.
|
32
|
-
@shell.
|
22
|
+
mock(@shell).get_input{'_'}
|
23
|
+
mock(@shell).get_input{'10**2'}
|
24
|
+
mock(@shell).get_input{'_'}
|
25
|
+
@shell.loop_once.should.eq ['hey', nil]
|
26
|
+
@shell.loop_once
|
27
|
+
@shell.loop_once.should.eq ['hey', nil]
|
33
28
|
end
|
34
29
|
|
35
30
|
should 'set __' do
|
36
31
|
setup
|
37
|
-
stub(@shell).
|
38
|
-
@shell.
|
39
|
-
@shell.
|
32
|
+
stub(@shell).puts
|
33
|
+
mock(@shell).get_input{'XD'}
|
34
|
+
mock(@shell).get_input{'__'}
|
35
|
+
@shell.loop_once
|
36
|
+
@shell.loop_once.first.should.kind_of?(NameError)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe Rib::Underscore do
|
41
|
+
behaves_like :rib
|
42
|
+
|
43
|
+
def setup bound=Object.new
|
44
|
+
@shell = Rib::Shell.new(
|
45
|
+
:binding => bound.instance_eval{binding}).before_loop
|
46
|
+
stub(@shell).puts
|
47
|
+
end
|
48
|
+
|
49
|
+
test_for Rib::Underscore do
|
50
|
+
behaves_like :underscore
|
40
51
|
end
|
41
52
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
|
2
|
+
require 'rib/test'
|
3
|
+
require 'rib/test/multiline'
|
4
|
+
require 'rib/more/multiline_history'
|
5
|
+
|
6
|
+
describe Rib::MultilineHistory do
|
7
|
+
behaves_like :rib
|
8
|
+
behaves_like :setup_multiline
|
9
|
+
|
10
|
+
def check str, err=nil
|
11
|
+
@shell.history.clear
|
12
|
+
with_history(str, err)
|
13
|
+
|
14
|
+
setup_shell
|
15
|
+
|
16
|
+
@shell.history.clear
|
17
|
+
@shell.history << 'old history'
|
18
|
+
with_history(str, err, 'old history')
|
19
|
+
end
|
20
|
+
|
21
|
+
def with_history str, err, *prefix
|
22
|
+
lines = str.split("\n")
|
23
|
+
lines[0...-1].inject([]){ |result, line|
|
24
|
+
input(line)
|
25
|
+
@shell.loop_once
|
26
|
+
result << line
|
27
|
+
@shell.history.to_a.should.eq prefix + result
|
28
|
+
result
|
29
|
+
}
|
30
|
+
input_done(lines.last, err)
|
31
|
+
history = if lines.size == 1
|
32
|
+
lines.first
|
33
|
+
else
|
34
|
+
"\n#{lines.join("\n")}"
|
35
|
+
end
|
36
|
+
@shell.history.to_a.should.eq prefix + [history]
|
37
|
+
end
|
38
|
+
|
39
|
+
test_for Rib::History, Rib::Multiline, Rib::MultilineHistory do
|
40
|
+
behaves_like :multiline
|
41
|
+
end
|
42
|
+
end
|
data/test/test_shell.rb
CHANGED
@@ -6,13 +6,15 @@ describe Rib::Shell do
|
|
6
6
|
behaves_like :rib
|
7
7
|
|
8
8
|
before do
|
9
|
+
Rib.disable_plugins
|
9
10
|
@shell = Rib::Shell.new
|
10
11
|
end
|
11
12
|
|
12
13
|
describe '#loop' do
|
13
14
|
def input str
|
14
15
|
mock(@shell).get_input{str}
|
15
|
-
@shell.loop
|
16
|
+
@shell.loop
|
17
|
+
true.should.eq true
|
16
18
|
end
|
17
19
|
should 'exit' do input('exit') end
|
18
20
|
should 'quit' do input('quit') end
|
@@ -26,7 +28,8 @@ describe Rib::Shell do
|
|
26
28
|
else
|
27
29
|
mock(@shell).get_input{ str }
|
28
30
|
end
|
29
|
-
@shell.loop_once
|
31
|
+
@shell.loop_once
|
32
|
+
true.should.eq true
|
30
33
|
end
|
31
34
|
|
32
35
|
should 'handles ctrl+c' do
|
@@ -40,12 +43,12 @@ describe Rib::Shell do
|
|
40
43
|
end
|
41
44
|
|
42
45
|
should 'error in print_result' do
|
43
|
-
mock(
|
46
|
+
mock(Rib).warn(/Error while printing result.*BOOM/m)
|
44
47
|
input('obj = Object.new; def obj.inspect; raise "BOOM"; end; obj')
|
45
48
|
end
|
46
49
|
|
47
50
|
should 'print error from eval' do
|
48
|
-
mock(@shell).
|
51
|
+
mock(@shell).puts(/RuntimeError/)
|
49
52
|
input('raise "blah"')
|
50
53
|
end
|
51
54
|
end
|
@@ -68,15 +71,17 @@ describe Rib::Shell do
|
|
68
71
|
end
|
69
72
|
|
70
73
|
should 'print error and increments line' do
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
+
result, err = @shell.eval_input('{')
|
75
|
+
result.should.eq nil
|
76
|
+
err.should.kind_of?(SyntaxError)
|
77
|
+
@shell.config[:line].should.eq @line + 1
|
74
78
|
end
|
75
79
|
end
|
76
80
|
|
77
81
|
should 'call after_loop even if in_loop raises' do
|
78
82
|
mock(@shell).loop_once{ raise 'boom' }
|
83
|
+
mock(Rib).warn(is_a(String))
|
79
84
|
mock(@shell).after_loop
|
80
|
-
lambda{
|
85
|
+
lambda{@shell.loop}.should.raise(RuntimeError)
|
81
86
|
end
|
82
87
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,22 +9,33 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-08-
|
12
|
+
date: 2011-08-14 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bond
|
16
|
-
requirement: &
|
16
|
+
requirement: &2169075740 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '0'
|
22
|
-
type: :
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *2169075740
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: hirb
|
27
|
+
requirement: &2169075260 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :development
|
23
34
|
prerelease: false
|
24
|
-
version_requirements: *
|
35
|
+
version_requirements: *2169075260
|
25
36
|
- !ruby/object:Gem::Dependency
|
26
37
|
name: bacon
|
27
|
-
requirement: &
|
38
|
+
requirement: &2169074780 !ruby/object:Gem::Requirement
|
28
39
|
none: false
|
29
40
|
requirements:
|
30
41
|
- - ! '>='
|
@@ -32,10 +43,10 @@ dependencies:
|
|
32
43
|
version: '0'
|
33
44
|
type: :development
|
34
45
|
prerelease: false
|
35
|
-
version_requirements: *
|
46
|
+
version_requirements: *2169074780
|
36
47
|
- !ruby/object:Gem::Dependency
|
37
48
|
name: rr
|
38
|
-
requirement: &
|
49
|
+
requirement: &2169074300 !ruby/object:Gem::Requirement
|
39
50
|
none: false
|
40
51
|
requirements:
|
41
52
|
- - ! '>='
|
@@ -43,66 +54,98 @@ dependencies:
|
|
43
54
|
version: '0'
|
44
55
|
type: :development
|
45
56
|
prerelease: false
|
46
|
-
version_requirements: *
|
47
|
-
description:
|
57
|
+
version_requirements: *2169074300
|
58
|
+
description: ! 'Ruby-Interactive-ruBy -- Yet another interactive Ruby shell
|
59
|
+
|
60
|
+
|
61
|
+
Rib is based on the design of [ripl][] and the work of [ripl-rc][], some of
|
62
|
+
|
63
|
+
the features are also inspired by [pry][]. The aim of Rib is to be fully
|
64
|
+
|
65
|
+
featured and yet very easy to opt-out or opt-in other features. It shall
|
66
|
+
|
67
|
+
be simple, lightweight and modular so that everyone could customize Rib.
|
68
|
+
|
69
|
+
|
70
|
+
[ripl]: https://github.com/cldwalker/ripl
|
71
|
+
|
72
|
+
[ripl-rc]: https://github.com/godfat/ripl-rc
|
73
|
+
|
74
|
+
[pry]: https://github.com/pry/pry'
|
48
75
|
email:
|
49
76
|
- godfat (XD) godfat.org
|
50
77
|
executables:
|
51
78
|
- rib
|
79
|
+
- rib-all
|
80
|
+
- rib-auto
|
81
|
+
- rib-min
|
82
|
+
- rib-rails
|
83
|
+
- rib-ramaze
|
52
84
|
extensions: []
|
53
85
|
extra_rdoc_files:
|
54
|
-
- CHANGES
|
55
86
|
- CONTRIBUTORS
|
56
87
|
- LICENSE
|
57
|
-
-
|
88
|
+
- CHANGES.md
|
89
|
+
- TODO.md
|
58
90
|
files:
|
59
91
|
- .gitignore
|
60
92
|
- .gitmodules
|
61
93
|
- .travis.yml
|
62
|
-
-
|
63
|
-
- CHANGES
|
94
|
+
- CHANGES.md
|
64
95
|
- CONTRIBUTORS
|
65
96
|
- Gemfile
|
66
97
|
- LICENSE
|
67
98
|
- README
|
68
99
|
- README.md
|
69
100
|
- Rakefile
|
70
|
-
- TODO
|
101
|
+
- TODO.md
|
71
102
|
- bin/rib
|
103
|
+
- bin/rib-all
|
104
|
+
- bin/rib-auto
|
105
|
+
- bin/rib-min
|
106
|
+
- bin/rib-rails
|
107
|
+
- bin/rib-ramaze
|
72
108
|
- lib/rib.rb
|
73
109
|
- lib/rib/all.rb
|
74
110
|
- lib/rib/api.rb
|
111
|
+
- lib/rib/app/auto.rb
|
112
|
+
- lib/rib/app/rails.rb
|
113
|
+
- lib/rib/app/ramaze.rb
|
114
|
+
- lib/rib/config.rb
|
75
115
|
- lib/rib/core.rb
|
76
116
|
- lib/rib/core/completion.rb
|
77
|
-
- lib/rib/core/
|
117
|
+
- lib/rib/core/history.rb
|
118
|
+
- lib/rib/core/multiline.rb
|
78
119
|
- lib/rib/core/readline.rb
|
120
|
+
- lib/rib/core/squeeze_history.rb
|
121
|
+
- lib/rib/core/strip_backtrace.rb
|
79
122
|
- lib/rib/core/underscore.rb
|
80
123
|
- lib/rib/debug.rb
|
124
|
+
- lib/rib/dep/hirb.rb
|
81
125
|
- lib/rib/more.rb
|
126
|
+
- lib/rib/more/anchor.rb
|
82
127
|
- lib/rib/more/color.rb
|
83
|
-
- lib/rib/more/
|
128
|
+
- lib/rib/more/edit.rb
|
84
129
|
- lib/rib/more/multiline_history.rb
|
85
130
|
- lib/rib/more/multiline_history_file.rb
|
86
|
-
- lib/rib/more/squeeze_history.rb
|
87
|
-
- lib/rib/more/strip_backtrace.rb
|
88
131
|
- lib/rib/plugin.rb
|
89
132
|
- lib/rib/runner.rb
|
90
133
|
- lib/rib/shell.rb
|
91
134
|
- lib/rib/test.rb
|
135
|
+
- lib/rib/test/multiline.rb
|
92
136
|
- lib/rib/version.rb
|
93
|
-
- lib/rib/zore.rb
|
94
|
-
- lib/rib/zore/anchor.rb
|
95
|
-
- lib/rib/zore/edit.rb
|
96
137
|
- rib.gemspec
|
97
138
|
- screenshot.png
|
98
139
|
- task/.gitignore
|
99
140
|
- task/gemgem.rb
|
100
141
|
- test/core/test_completion.rb
|
101
|
-
- test/core/
|
142
|
+
- test/core/test_history.rb
|
143
|
+
- test/core/test_multiline.rb
|
102
144
|
- test/core/test_readline.rb
|
145
|
+
- test/core/test_squeeze_history.rb
|
103
146
|
- test/core/test_underscore.rb
|
104
147
|
- test/more/test_color.rb
|
105
|
-
- test/more/
|
148
|
+
- test/more/test_multiline_history.rb
|
106
149
|
- test/test_api.rb
|
107
150
|
- test/test_plugin.rb
|
108
151
|
- test/test_shell.rb
|
@@ -131,14 +174,16 @@ rubyforge_project:
|
|
131
174
|
rubygems_version: 1.8.7
|
132
175
|
signing_key:
|
133
176
|
specification_version: 3
|
134
|
-
summary:
|
177
|
+
summary: Ruby-Interactive-ruBy -- Yet another interactive Ruby shell
|
135
178
|
test_files:
|
136
179
|
- test/core/test_completion.rb
|
137
|
-
- test/core/
|
180
|
+
- test/core/test_history.rb
|
181
|
+
- test/core/test_multiline.rb
|
138
182
|
- test/core/test_readline.rb
|
183
|
+
- test/core/test_squeeze_history.rb
|
139
184
|
- test/core/test_underscore.rb
|
140
185
|
- test/more/test_color.rb
|
141
|
-
- test/more/
|
186
|
+
- test/more/test_multiline_history.rb
|
142
187
|
- test/test_api.rb
|
143
188
|
- test/test_plugin.rb
|
144
189
|
- test/test_shell.rb
|