ripl 0.2.8 → 0.2.9
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/.gemspec +2 -1
- data/CHANGELOG.rdoc +5 -0
- data/README.rdoc +12 -3
- data/deps.rip +1 -1
- data/lib/ripl.rb +10 -1
- data/lib/ripl/completion.rb +2 -1
- data/lib/ripl/history.rb +1 -1
- data/lib/ripl/readline.rb +1 -1
- data/lib/ripl/runner.rb +1 -1
- data/lib/ripl/shell.rb +6 -4
- data/lib/ripl/version.rb +1 -1
- data/man/ripl.1 +9 -3
- data/man/ripl.1.html +10 -3
- data/man/ripl.1.ronn +12 -3
- data/test/completion_test.rb +29 -0
- data/test/deps.rip +2 -1
- data/test/runner_test.rb +7 -1
- metadata +22 -7
data/.gemspec
CHANGED
|
@@ -13,10 +13,11 @@ Gem::Specification.new do |s|
|
|
|
13
13
|
s.required_rubygems_version = ">= 1.3.6"
|
|
14
14
|
s.rubyforge_project = 'tagaholic'
|
|
15
15
|
s.executables = %w(ripl)
|
|
16
|
-
s.add_dependency 'bond', '~> 0.3.
|
|
16
|
+
s.add_dependency 'bond', '~> 0.3.4'
|
|
17
17
|
s.add_development_dependency 'bacon', '>= 1.1.0'
|
|
18
18
|
s.add_development_dependency 'rr', '>= 1.0.0'
|
|
19
19
|
s.add_development_dependency 'bacon-bits'
|
|
20
|
+
s.add_development_dependency 'bacon-rr'
|
|
20
21
|
s.files = Dir.glob(%w[{lib,test}/**/*.rb bin/* [A-Z]*.{txt,rdoc} ext/**/*.{rb,c} **/deps.rip]) + %w{Rakefile .gemspec}
|
|
21
22
|
s.files += Dir.glob('man/*')
|
|
22
23
|
s.extra_rdoc_files = ["README.rdoc", "LICENSE.txt"]
|
data/CHANGELOG.rdoc
CHANGED
data/README.rdoc
CHANGED
|
@@ -43,7 +43,7 @@ To view ripl's man page:
|
|
|
43
43
|
When first trying ripl, you may experience errors in your ~/.irbrc due to an irb-specific
|
|
44
44
|
configuration. In order to have ripl and irb coexist peacefully, you should silence these errors.
|
|
45
45
|
To silence them without touching your ~/.irbrc, install the ripl-irb gem. This ripl plugin fakes
|
|
46
|
-
irb's existence
|
|
46
|
+
irb's existence and points to ripl equivalents for your irb configurations. Otherwise, if you don't mind
|
|
47
47
|
modifying ~/.irbrc, wrap your irb-specific configuration in a block as follow:
|
|
48
48
|
|
|
49
49
|
if defined? IRB
|
|
@@ -63,7 +63,7 @@ modifying ~/.irbrc, wrap your irb-specific configuration in a block as follow:
|
|
|
63
63
|
* IRB.conf -> Ripl.config
|
|
64
64
|
* Handles Ctrl-C quietly
|
|
65
65
|
* Enhancements over irb
|
|
66
|
-
* ~
|
|
66
|
+
* ~270 lines (doc included) vs irb's 5000+ lines
|
|
67
67
|
* Easily extendable with plugins
|
|
68
68
|
* Tests and documentation!
|
|
69
69
|
* Customizable completion and completion of method arguments (from bond)
|
|
@@ -100,7 +100,7 @@ As an example plugin, let's color error messages red:
|
|
|
100
100
|
end
|
|
101
101
|
end
|
|
102
102
|
end
|
|
103
|
-
Ripl::Shell.
|
|
103
|
+
Ripl::Shell.include Ripl::RedError
|
|
104
104
|
|
|
105
105
|
Note this plugin extends format_error() by invoking the original format_error() with super. This is
|
|
106
106
|
possible for any method that is available for extension by plugins. To see what methods are available for
|
|
@@ -156,14 +156,23 @@ see {ripl-rails}[http://github.com/cldwalker/ripl-rails].
|
|
|
156
156
|
* {ripl-color_result}[http://github.com/janlelis/ripl-color_result] : colorizes results
|
|
157
157
|
* {ripl-auto_indent}[http://github.com/janlelis/ripl-auto_indent] : auto indents multi-line input
|
|
158
158
|
* {ripl-hirb}[http://github.com/cldwalker/hirb] : comes with hirb to make it a proper riplzen
|
|
159
|
+
* {ripl-hijack}[http://github.com/cldwalker/ripl-hijack] : ripl console to a ruby process
|
|
159
160
|
* {ripl-misc}[http://github.com/cldwalker/ripl-misc] : a playground for ripl plugins
|
|
160
161
|
* {ripl-profiles}[https://github.com/janlelis/ripl-profiles]: load ripl profiles with a --profile option
|
|
162
|
+
* {ripl-short_errors}[https://github.com/janlelis/ripl-misc/blob/master/lib/ripl/short_errors.rb]:
|
|
163
|
+
display short backtrace
|
|
161
164
|
|
|
162
165
|
== Ripl Shells
|
|
163
166
|
Shells built on top of ripl:
|
|
164
167
|
|
|
165
168
|
* {nirvana}[http://github.com/cldwalker/nirvana]: A ruby web shell complete with autocomplete
|
|
166
169
|
* {fresh}[http://github.com/janlelis/fresh]: An interesting ruby/system hybrid shell
|
|
170
|
+
* {ripl-johnson}[http://github.com/cldwalker/ripl-johnson]: A js shell based on johnson (firefox tracemonkey)
|
|
171
|
+
|
|
172
|
+
== More Ripl Links
|
|
173
|
+
|
|
174
|
+
* {ripl screencast}[http://www.rubypulse.com/ep0.51_ripl.html]
|
|
175
|
+
* {overview of ripl features}[http://rbjl.net/44-ripl-why-should-you-use-an-irb-alternative]
|
|
167
176
|
|
|
168
177
|
== Irb Alternatives
|
|
169
178
|
Some other irb alternatives to check out:
|
data/deps.rip
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
bond ~>0.3.
|
|
1
|
+
bond ~>0.3.4
|
data/lib/ripl.rb
CHANGED
|
@@ -5,10 +5,19 @@ module Ripl
|
|
|
5
5
|
|
|
6
6
|
def self.start(*args); Runner.start(*args); end
|
|
7
7
|
|
|
8
|
+
def self.plugins
|
|
9
|
+
file = File.symlink?(__FILE__) ? File.readlink(__FILE__) : __FILE__
|
|
10
|
+
$".map {|e| e[/ripl\/[^\/]+$/] }.compact -
|
|
11
|
+
Dir["#{File.dirname(file)}/ripl/*.rb"].map {|e| e[/ripl\/[^\/]+$/] }
|
|
12
|
+
end
|
|
13
|
+
|
|
8
14
|
def self.shell(options={})
|
|
9
15
|
@shell ||= Shell.create(config.merge!(options))
|
|
10
16
|
end
|
|
11
|
-
|
|
17
|
+
|
|
18
|
+
module Commands
|
|
19
|
+
class<<self; public :include; end
|
|
20
|
+
end
|
|
12
21
|
end
|
|
13
22
|
|
|
14
23
|
require 'ripl/shell'
|
data/lib/ripl/completion.rb
CHANGED
|
@@ -3,8 +3,9 @@ require 'bond'
|
|
|
3
3
|
module Ripl::Completion
|
|
4
4
|
def before_loop
|
|
5
5
|
super
|
|
6
|
+
(config[:completion][:gems] ||= []).concat Ripl.plugins
|
|
6
7
|
Bond.restart config[:completion]
|
|
7
8
|
end
|
|
8
9
|
end
|
|
9
|
-
Ripl::Shell.
|
|
10
|
+
Ripl::Shell.include Ripl::Completion
|
|
10
11
|
Ripl.config[:completion][:eval_binding] = lambda { Ripl.shell.binding }
|
data/lib/ripl/history.rb
CHANGED
data/lib/ripl/readline.rb
CHANGED
data/lib/ripl/runner.rb
CHANGED
data/lib/ripl/shell.rb
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
class Ripl::Shell
|
|
2
|
-
OPTIONS = {:name=>'ripl', :result_prompt=>'=> ', :prompt=>'>> ',
|
|
3
|
-
:binding=>TOPLEVEL_BINDING, :irbrc=>'~/.irbrc'}
|
|
4
|
-
EXIT_WORDS = [nil, 'exit', 'quit']
|
|
5
|
-
|
|
6
2
|
def self.create(options={})
|
|
7
3
|
require 'ripl/readline' if options[:readline]
|
|
8
4
|
require 'ripl/completion' if options[:completion]
|
|
@@ -11,6 +7,12 @@ class Ripl::Shell
|
|
|
11
7
|
new(options)
|
|
12
8
|
end
|
|
13
9
|
|
|
10
|
+
class <<self; public :include; end
|
|
11
|
+
|
|
12
|
+
OPTIONS = {:name=>'ripl', :result_prompt=>'=> ', :prompt=>'>> ',
|
|
13
|
+
:binding=>TOPLEVEL_BINDING, :irbrc=>'~/.irbrc'}
|
|
14
|
+
EXIT_WORDS = [nil, 'exit', 'quit']
|
|
15
|
+
|
|
14
16
|
attr_accessor :line, :binding, :result, :name
|
|
15
17
|
def initialize(options={})
|
|
16
18
|
options = OPTIONS.merge options
|
data/lib/ripl/version.rb
CHANGED
data/man/ripl.1
CHANGED
|
@@ -18,7 +18,7 @@ ripl [COMMAND] [\-r|\-\-require] [\-I] [\-f] [\-d] [\-h|\-\-help] [\-v|\-\-versi
|
|
|
18
18
|
ripl is a light, modular alternative to irb\. Like irb, it loads ~/\.irbrc, has autocompletion and keeps history in ~/\.irb_history\. Unlike irb, it is highly customizable via plugins and supports commands\. This customizability makes it easy to build custom shells (i\.e\. for a gem or application) and complex shells (i\.e\. for the web)\.
|
|
19
19
|
.
|
|
20
20
|
.SH "COMING FROM IRB"
|
|
21
|
-
When first trying ripl, you may experience errors in your ~/\.irbrc due to an irb\-specific configuration\. In order to have ripl and irb coexist peacefully, you should silence these errors\. To silence them without touching your ~/\.irbrc, install the ripl\-irb gem\. This ripl plugin fakes irb\'s existence
|
|
21
|
+
When first trying ripl, you may experience errors in your ~/\.irbrc due to an irb\-specific configuration\. In order to have ripl and irb coexist peacefully, you should silence these errors\. To silence them without touching your ~/\.irbrc, install the ripl\-irb gem\. This ripl plugin fakes irb\'s existence and points to ripl equivalents for your irb configurations\. Otherwise, if you don\'t mind modifying ~/\.irbrc, wrap your irb\-specific configuration in a block as follow:
|
|
22
22
|
.
|
|
23
23
|
.IP "" 4
|
|
24
24
|
.
|
|
@@ -122,7 +122,7 @@ module Ripl
|
|
|
122
122
|
end
|
|
123
123
|
end
|
|
124
124
|
end
|
|
125
|
-
Ripl::Shell\.
|
|
125
|
+
Ripl::Shell\.include Ripl::RedError
|
|
126
126
|
.
|
|
127
127
|
.fi
|
|
128
128
|
.
|
|
@@ -196,12 +196,18 @@ end
|
|
|
196
196
|
end
|
|
197
197
|
.
|
|
198
198
|
.IP
|
|
199
|
-
Ripl::Commands\.
|
|
199
|
+
Ripl::Commands\.include Ripl::SuperHistory::Commands
|
|
200
200
|
.
|
|
201
201
|
.IP
|
|
202
202
|
>> history # use command in ripl
|
|
203
203
|
.
|
|
204
204
|
.IP "\(bu" 4
|
|
205
|
+
To define custom autocompletion for a plugin and its commands, create a completion file in lib/ripl/completions/plugin_name i\.e\. ripl\-super_history plugin \-> lib/ripl/completions/super_history\.rb\. The syntax of this file is explained in bond\'s docs \fIhttp://tagaholic\.me/bond/doc/Bond/Rc\.html\fR\. To autocomplete a console command, define a :method completion\. For an example plugin that uses this, see ripl\-commands \fIhttp://github\.com/cldwalker/ripl\-commands\fR\.
|
|
206
|
+
.
|
|
207
|
+
.IP "\(bu" 4
|
|
208
|
+
For plugins with console commands, commands aren\'t immediately recognized if the plugin is required within ripl\. To fix this: Ripl\.shell\.add_commands(self)\.
|
|
209
|
+
.
|
|
210
|
+
.IP "\(bu" 4
|
|
205
211
|
For more examples of plugins, see gems I\'ve made that start with \'ripl\-\'\.
|
|
206
212
|
.
|
|
207
213
|
.IP "" 0
|
data/man/ripl.1.html
CHANGED
|
@@ -95,7 +95,7 @@ and complex shells (i.e. for the web).</p>
|
|
|
95
95
|
<p>When first trying ripl, you may experience errors in your ~/.irbrc due to an irb-specific
|
|
96
96
|
configuration. In order to have ripl and irb coexist peacefully, you should silence these errors.
|
|
97
97
|
To silence them without touching your ~/.irbrc, install the ripl-irb gem. This ripl plugin fakes
|
|
98
|
-
irb's existence
|
|
98
|
+
irb's existence and points to ripl equivalents for your irb configurations. Otherwise, if you don't mind
|
|
99
99
|
modifying ~/.irbrc, wrap your irb-specific configuration in a block as follow:</p>
|
|
100
100
|
|
|
101
101
|
<pre><code>if defined? IRB
|
|
@@ -164,7 +164,7 @@ module Ripl
|
|
|
164
164
|
end
|
|
165
165
|
end
|
|
166
166
|
end
|
|
167
|
-
Ripl::Shell.
|
|
167
|
+
Ripl::Shell.include Ripl::RedError
|
|
168
168
|
</code></pre>
|
|
169
169
|
|
|
170
170
|
<p>Note this plugin extends format_error() by invoking the original format_error() with super. To see
|
|
@@ -211,9 +211,16 @@ end
|
|
|
211
211
|
|
|
212
212
|
<p> end</p>
|
|
213
213
|
|
|
214
|
-
<p> Ripl::Commands.
|
|
214
|
+
<p> Ripl::Commands.include Ripl::SuperHistory::Commands</p>
|
|
215
215
|
|
|
216
216
|
<p> >> history # use command in ripl</p></li>
|
|
217
|
+
<li><p>To define custom autocompletion for a plugin and its commands, create a completion file in
|
|
218
|
+
lib/ripl/completions/plugin_name i.e. ripl-super_history plugin -> lib/ripl/completions/super_history.rb.
|
|
219
|
+
The syntax of this file is explained <a href="http://tagaholic.me/bond/doc/Bond/Rc.html">in bond's docs</a>.
|
|
220
|
+
To autocomplete a console command, define a :method completion. For an example plugin that uses this, see
|
|
221
|
+
<a href="http://github.com/cldwalker/ripl-commands">ripl-commands</a>.</p></li>
|
|
222
|
+
<li><p>For plugins with console commands, commands aren't immediately recognized if the plugin is required within ripl.
|
|
223
|
+
To fix this: Ripl.shell.add_commands(self).</p></li>
|
|
217
224
|
<li><p>For more examples of plugins, see gems I've made that start with 'ripl-'.</p></li>
|
|
218
225
|
</ul>
|
|
219
226
|
|
data/man/ripl.1.ronn
CHANGED
|
@@ -17,7 +17,7 @@ and complex shells (i.e. for the web).
|
|
|
17
17
|
When first trying ripl, you may experience errors in your ~/.irbrc due to an irb-specific
|
|
18
18
|
configuration. In order to have ripl and irb coexist peacefully, you should silence these errors.
|
|
19
19
|
To silence them without touching your ~/.irbrc, install the ripl-irb gem. This ripl plugin fakes
|
|
20
|
-
irb's existence
|
|
20
|
+
irb's existence and points to ripl equivalents for your irb configurations. Otherwise, if you don't mind
|
|
21
21
|
modifying ~/.irbrc, wrap your irb-specific configuration in a block as follow:
|
|
22
22
|
|
|
23
23
|
if defined? IRB
|
|
@@ -95,7 +95,7 @@ For an example shell plugin, let's color error messages red:
|
|
|
95
95
|
end
|
|
96
96
|
end
|
|
97
97
|
end
|
|
98
|
-
Ripl::Shell.
|
|
98
|
+
Ripl::Shell.include Ripl::RedError
|
|
99
99
|
|
|
100
100
|
Note this plugin extends format_error() by invoking the original format_error() with super. To see
|
|
101
101
|
what methods are available for extension, see Ripl::Shell::API and Ripl::Runner::API.
|
|
@@ -138,10 +138,19 @@ Points to consider when creating plugins:
|
|
|
138
138
|
end
|
|
139
139
|
end
|
|
140
140
|
|
|
141
|
-
Ripl::Commands.
|
|
141
|
+
Ripl::Commands.include Ripl::SuperHistory::Commands
|
|
142
142
|
|
|
143
143
|
\>\> history # use command in ripl
|
|
144
144
|
|
|
145
|
+
* To define custom autocompletion for a plugin and its commands, create a completion file in
|
|
146
|
+
lib/ripl/completions/plugin_name i.e. ripl-super_history plugin -> lib/ripl/completions/super_history.rb.
|
|
147
|
+
The syntax of this file is explained [in bond's docs](http://tagaholic.me/bond/doc/Bond/Rc.html).
|
|
148
|
+
To autocomplete a console command, define a :method completion. For an example plugin that uses this, see
|
|
149
|
+
[ripl-commands](http://github.com/cldwalker/ripl-commands).
|
|
150
|
+
|
|
151
|
+
* For plugins with console commands, commands aren't immediately recognized if the plugin is required within ripl.
|
|
152
|
+
To fix this: Ripl.shell.add_commands(self).
|
|
153
|
+
|
|
145
154
|
* For more examples of plugins, see gems I've made that start with 'ripl-'.
|
|
146
155
|
|
|
147
156
|
## CREATE CUSTOM SHELLS
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'test_helper')
|
|
2
|
+
|
|
3
|
+
describe "Completion" do
|
|
4
|
+
describe "#before_loop" do
|
|
5
|
+
before_all do
|
|
6
|
+
require 'ripl/completion'
|
|
7
|
+
@shell = Object.new.extend(
|
|
8
|
+
Module.new {
|
|
9
|
+
attr_accessor :config
|
|
10
|
+
def before_loop; end
|
|
11
|
+
}).extend Ripl::Completion
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
before { @shell.config = {:completion => {}} }
|
|
15
|
+
after { $".pop }
|
|
16
|
+
|
|
17
|
+
it "adds gem plugin to config" do
|
|
18
|
+
$" << '/dir/ripl/some_plugin.rb'
|
|
19
|
+
mock(Bond).restart(:gems =>['ripl/some_plugin.rb'])
|
|
20
|
+
@shell.before_loop
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "doesn't add local plugin to config" do
|
|
24
|
+
$" << '/dir/ripl/completion.rb'
|
|
25
|
+
mock(Bond).restart(:gems =>[])
|
|
26
|
+
@shell.before_loop
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
data/test/deps.rip
CHANGED
data/test/runner_test.rb
CHANGED
|
@@ -49,11 +49,17 @@ describe "Runner" do
|
|
|
49
49
|
Ripl.config[:blah].should == true
|
|
50
50
|
end
|
|
51
51
|
|
|
52
|
-
it "
|
|
52
|
+
it "rescues and prints SyntaxError" do
|
|
53
53
|
mock(Runner).load(anything) { raise SyntaxError }
|
|
54
54
|
mock_shell
|
|
55
55
|
capture_stderr { Runner.run([]) }.should =~ %r{^ripl: Error while loading ~/.riplrc:\nSyntaxError:}
|
|
56
56
|
end
|
|
57
|
+
|
|
58
|
+
it "rescues and prints LoadError" do
|
|
59
|
+
mock(Runner).load(anything) { raise LoadError }
|
|
60
|
+
mock_shell
|
|
61
|
+
capture_stderr { Runner.run([]) }.should =~ %r{^ripl: Error while loading ~/.riplrc:\nLoadError:}
|
|
62
|
+
end
|
|
57
63
|
end
|
|
58
64
|
|
|
59
65
|
describe "with subcommand" do
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ripl
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 5
|
|
5
5
|
prerelease: false
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
8
|
- 2
|
|
9
|
-
-
|
|
10
|
-
version: 0.2.
|
|
9
|
+
- 9
|
|
10
|
+
version: 0.2.9
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Gabriel Horner
|
|
@@ -15,7 +15,7 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date: 2010-12-
|
|
18
|
+
date: 2010-12-24 00:00:00 -05:00
|
|
19
19
|
default_executable:
|
|
20
20
|
dependencies:
|
|
21
21
|
- !ruby/object:Gem::Dependency
|
|
@@ -26,12 +26,12 @@ dependencies:
|
|
|
26
26
|
requirements:
|
|
27
27
|
- - ~>
|
|
28
28
|
- !ruby/object:Gem::Version
|
|
29
|
-
hash:
|
|
29
|
+
hash: 27
|
|
30
30
|
segments:
|
|
31
31
|
- 0
|
|
32
32
|
- 3
|
|
33
|
-
-
|
|
34
|
-
version: 0.3.
|
|
33
|
+
- 4
|
|
34
|
+
version: 0.3.4
|
|
35
35
|
type: :runtime
|
|
36
36
|
version_requirements: *id001
|
|
37
37
|
- !ruby/object:Gem::Dependency
|
|
@@ -80,6 +80,20 @@ dependencies:
|
|
|
80
80
|
version: "0"
|
|
81
81
|
type: :development
|
|
82
82
|
version_requirements: *id004
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: bacon-rr
|
|
85
|
+
prerelease: false
|
|
86
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
|
87
|
+
none: false
|
|
88
|
+
requirements:
|
|
89
|
+
- - ">="
|
|
90
|
+
- !ruby/object:Gem::Version
|
|
91
|
+
hash: 3
|
|
92
|
+
segments:
|
|
93
|
+
- 0
|
|
94
|
+
version: "0"
|
|
95
|
+
type: :development
|
|
96
|
+
version_requirements: *id005
|
|
83
97
|
description: ripl is a light, modular alternative to irb. Like irb, it loads ~/.irbrc, has autocompletion and keeps history in ~/.irb_history. Unlike irb, it is highly customizable via plugins and supports commands i.e. ripl-play. This customizability makes it easy to build custom shells (i.e. for a gem or application) and complex shells (i.e. for the web).
|
|
84
98
|
email: gabriel.horner@gmail.com
|
|
85
99
|
executables:
|
|
@@ -97,6 +111,7 @@ files:
|
|
|
97
111
|
- lib/ripl/shell.rb
|
|
98
112
|
- lib/ripl/version.rb
|
|
99
113
|
- lib/ripl.rb
|
|
114
|
+
- test/completion_test.rb
|
|
100
115
|
- test/runner_test.rb
|
|
101
116
|
- test/shell_test.rb
|
|
102
117
|
- test/test_helper.rb
|