irb 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +9 -0
- data/.travis.yml +6 -0
- data/Gemfile +0 -5
- data/README.md +3 -3
- data/irb.gemspec +1 -59
- data/lib/irb.rb +33 -105
- data/lib/irb/cmd/fork.rb +1 -1
- data/lib/irb/cmd/help.rb +5 -9
- data/lib/irb/completion.rb +31 -126
- data/lib/irb/context.rb +65 -104
- data/lib/irb/ext/history.rb +9 -47
- data/lib/irb/ext/save-history.rb +5 -17
- data/lib/irb/ext/use-loader.rb +0 -3
- data/lib/irb/extend-command.rb +48 -70
- data/lib/irb/init.rb +17 -27
- data/lib/irb/input-method.rb +0 -106
- data/lib/irb/inspector.rb +2 -12
- data/lib/irb/lc/help-message +6 -9
- data/lib/irb/lc/ja/help-message +6 -9
- data/lib/irb/ruby-lex.rb +1038 -357
- data/lib/irb/ruby-token.rb +267 -0
- data/lib/irb/version.rb +2 -2
- data/lib/irb/workspace.rb +19 -57
- metadata +6 -22
- data/doc/irb/irb-tools.rd.ja +0 -184
- data/doc/irb/irb.rd.ja +0 -411
- data/lib/irb/color.rb +0 -233
- data/lib/irb/ruby_logo.aa +0 -38
- data/man/irb.1 +0 -207
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fc28457f7b997cac6ec910290d58677ee4d21b71bb769c421840b77242dddc04
|
4
|
+
data.tar.gz: af7a068e8bbef2cc1aec4be90b907b959da162bc0442183cee45d4ef0e39bea5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0770a8ef428fd8f604509b67ee2e796672f243b3736e385b128e0dc9354cb6283531612ff60d46fffcb06d89b6de65d1eaf7fb0f6e8e032a9058f349285c6b3d
|
7
|
+
data.tar.gz: 48d11c9ddabe1639331330cc8aa5f30a5f5306b5852c404377dda2527ed86e8767d783811f20e8b02783447df9adb5315d4fa1bce4422aab7774ab8140075e44
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
CHANGED
@@ -3,8 +3,3 @@ source "https://rubygems.org"
|
|
3
3
|
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
4
4
|
|
5
5
|
gemspec
|
6
|
-
|
7
|
-
# TODO: remove this when reline with `Reline::Unicode.escape_for_print` is released.
|
8
|
-
if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.7.0')
|
9
|
-
gem "reline", github: "ruby/reline"
|
10
|
-
end
|
data/README.md
CHANGED
@@ -31,9 +31,9 @@ $ irb
|
|
31
31
|
irb(main):001:0> 1+2
|
32
32
|
#=> 3
|
33
33
|
irb(main):002:0> class Foo
|
34
|
-
irb(main):003:1>
|
35
|
-
irb(main):004:2>
|
36
|
-
irb(main):005:2>
|
34
|
+
irb(main):003:1> def foo
|
35
|
+
irb(main):004:2> print 1
|
36
|
+
irb(main):005:2> end
|
37
37
|
irb(main):006:1> end
|
38
38
|
#=> nil
|
39
39
|
```
|
data/irb.gemspec
CHANGED
@@ -16,69 +16,11 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.homepage = "https://github.com/ruby/irb"
|
17
17
|
spec.license = "BSD-2-Clause"
|
18
18
|
|
19
|
-
spec.files = [
|
20
|
-
"Gemfile",
|
21
|
-
"LICENSE.txt",
|
22
|
-
"README.md",
|
23
|
-
"Rakefile",
|
24
|
-
"bin/console",
|
25
|
-
"bin/setup",
|
26
|
-
"doc/irb/irb-tools.rd.ja",
|
27
|
-
"doc/irb/irb.rd.ja",
|
28
|
-
"exe/irb",
|
29
|
-
"irb.gemspec",
|
30
|
-
"lib/irb.rb",
|
31
|
-
"lib/irb/cmd/chws.rb",
|
32
|
-
"lib/irb/cmd/fork.rb",
|
33
|
-
"lib/irb/cmd/help.rb",
|
34
|
-
"lib/irb/cmd/load.rb",
|
35
|
-
"lib/irb/cmd/nop.rb",
|
36
|
-
"lib/irb/cmd/pushws.rb",
|
37
|
-
"lib/irb/cmd/subirb.rb",
|
38
|
-
"lib/irb/color.rb",
|
39
|
-
"lib/irb/completion.rb",
|
40
|
-
"lib/irb/context.rb",
|
41
|
-
"lib/irb/ext/change-ws.rb",
|
42
|
-
"lib/irb/ext/history.rb",
|
43
|
-
"lib/irb/ext/loader.rb",
|
44
|
-
"lib/irb/ext/multi-irb.rb",
|
45
|
-
"lib/irb/ext/save-history.rb",
|
46
|
-
"lib/irb/ext/tracer.rb",
|
47
|
-
"lib/irb/ext/use-loader.rb",
|
48
|
-
"lib/irb/ext/workspaces.rb",
|
49
|
-
"lib/irb/extend-command.rb",
|
50
|
-
"lib/irb/frame.rb",
|
51
|
-
"lib/irb/help.rb",
|
52
|
-
"lib/irb/init.rb",
|
53
|
-
"lib/irb/input-method.rb",
|
54
|
-
"lib/irb/inspector.rb",
|
55
|
-
"lib/irb/lc/.document",
|
56
|
-
"lib/irb/lc/error.rb",
|
57
|
-
"lib/irb/lc/help-message",
|
58
|
-
"lib/irb/lc/ja/encoding_aliases.rb",
|
59
|
-
"lib/irb/lc/ja/error.rb",
|
60
|
-
"lib/irb/lc/ja/help-message",
|
61
|
-
"lib/irb/locale.rb",
|
62
|
-
"lib/irb/magic-file.rb",
|
63
|
-
"lib/irb/notifier.rb",
|
64
|
-
"lib/irb/output-method.rb",
|
65
|
-
"lib/irb/ruby-lex.rb",
|
66
|
-
"lib/irb/ruby_logo.aa",
|
67
|
-
"lib/irb/slex.rb",
|
68
|
-
"lib/irb/src_encoding.rb",
|
69
|
-
"lib/irb/version.rb",
|
70
|
-
"lib/irb/workspace.rb",
|
71
|
-
"lib/irb/ws-for-case-2.rb",
|
72
|
-
"lib/irb/xmp.rb",
|
73
|
-
"man/irb.1",
|
74
|
-
]
|
19
|
+
spec.files = [".gitignore", ".travis.yml", "Gemfile", "LICENSE.txt", "README.md", "Rakefile", "bin/console", "bin/setup", "exe/irb", "irb.gemspec", "lib/irb.rb", "lib/irb/cmd/chws.rb", "lib/irb/cmd/fork.rb", "lib/irb/cmd/help.rb", "lib/irb/cmd/load.rb", "lib/irb/cmd/nop.rb", "lib/irb/cmd/pushws.rb", "lib/irb/cmd/subirb.rb", "lib/irb/completion.rb", "lib/irb/context.rb", "lib/irb/ext/change-ws.rb", "lib/irb/ext/history.rb", "lib/irb/ext/loader.rb", "lib/irb/ext/multi-irb.rb", "lib/irb/ext/save-history.rb", "lib/irb/ext/tracer.rb", "lib/irb/ext/use-loader.rb", "lib/irb/ext/workspaces.rb", "lib/irb/extend-command.rb", "lib/irb/frame.rb", "lib/irb/help.rb", "lib/irb/init.rb", "lib/irb/input-method.rb", "lib/irb/inspector.rb", "lib/irb/lc/.document", "lib/irb/lc/error.rb", "lib/irb/lc/help-message", "lib/irb/lc/ja/encoding_aliases.rb", "lib/irb/lc/ja/error.rb", "lib/irb/lc/ja/help-message", "lib/irb/locale.rb", "lib/irb/magic-file.rb", "lib/irb/notifier.rb", "lib/irb/output-method.rb", "lib/irb/ruby-lex.rb", "lib/irb/ruby-token.rb", "lib/irb/slex.rb", "lib/irb/src_encoding.rb", "lib/irb/version.rb", "lib/irb/workspace.rb", "lib/irb/ws-for-case-2.rb", "lib/irb/xmp.rb"]
|
75
20
|
spec.bindir = "exe"
|
76
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
77
22
|
spec.require_paths = ["lib"]
|
78
23
|
|
79
|
-
spec.required_ruby_version = Gem::Requirement.new(">= 2.4")
|
80
|
-
|
81
|
-
spec.add_dependency "reline", ">= 0.0.1"
|
82
24
|
spec.add_development_dependency "bundler"
|
83
25
|
spec.add_development_dependency "rake"
|
84
26
|
end
|
data/lib/irb.rb
CHANGED
@@ -10,7 +10,6 @@
|
|
10
10
|
#
|
11
11
|
#
|
12
12
|
require "e2mmap"
|
13
|
-
require "ripper"
|
14
13
|
|
15
14
|
require "irb/init"
|
16
15
|
require "irb/context"
|
@@ -19,7 +18,6 @@ require "irb/extend-command"
|
|
19
18
|
require "irb/ruby-lex"
|
20
19
|
require "irb/input-method"
|
21
20
|
require "irb/locale"
|
22
|
-
require "irb/color"
|
23
21
|
|
24
22
|
require "irb/version"
|
25
23
|
|
@@ -45,8 +43,8 @@ require "irb/version"
|
|
45
43
|
# irb(main):006:1> end
|
46
44
|
# #=> nil
|
47
45
|
#
|
48
|
-
# The
|
49
|
-
#
|
46
|
+
# The Readline extension module can be used with irb. Use of Readline is
|
47
|
+
# default if it's installed.
|
50
48
|
#
|
51
49
|
# == Command line options
|
52
50
|
#
|
@@ -61,24 +59,21 @@ require "irb/version"
|
|
61
59
|
# -W[level=2] Same as `ruby -W`
|
62
60
|
# --inspect Use `inspect' for output (default except for bc mode)
|
63
61
|
# --noinspect Don't use inspect for output
|
64
|
-
# --
|
65
|
-
# --
|
66
|
-
# --singleline Use singleline editor module
|
67
|
-
# --nosingleline Don't use singleline editor module
|
68
|
-
# --colorize Use colorization
|
69
|
-
# --nocolorize Don't use colorization
|
62
|
+
# --readline Use Readline extension module
|
63
|
+
# --noreadline Don't use Readline extension module
|
70
64
|
# --prompt prompt-mode
|
71
65
|
# --prompt-mode prompt-mode
|
72
66
|
# Switch prompt mode. Pre-defined prompt modes are
|
73
67
|
# `default', `simple', `xmp' and `inf-ruby'
|
74
68
|
# --inf-ruby-mode Use prompt appropriate for inf-ruby-mode on emacs.
|
75
|
-
# Suppresses --
|
69
|
+
# Suppresses --readline.
|
76
70
|
# --simple-prompt Simple prompt mode
|
77
71
|
# --noprompt No prompt mode
|
78
72
|
# --tracer Display trace for each execution of commands.
|
79
73
|
# --back-trace-limit n
|
80
74
|
# Display backtrace top n and tail n. The default
|
81
75
|
# value is 16.
|
76
|
+
# --irb_debug n Set internal debug level to n (not for popular use)
|
82
77
|
# -v, --version Print the version of irb
|
83
78
|
#
|
84
79
|
# == Configuration
|
@@ -100,20 +95,19 @@ require "irb/version"
|
|
100
95
|
# IRB.conf[:IRB_RC] = nil
|
101
96
|
# IRB.conf[:BACK_TRACE_LIMIT]=16
|
102
97
|
# IRB.conf[:USE_LOADER] = false
|
103
|
-
# IRB.conf[:
|
104
|
-
# IRB.conf[:USE_SINGLELINE] = nil
|
105
|
-
# IRB.conf[:USE_COLORIZE] = true
|
98
|
+
# IRB.conf[:USE_READLINE] = nil
|
106
99
|
# IRB.conf[:USE_TRACER] = false
|
107
100
|
# IRB.conf[:IGNORE_SIGINT] = true
|
108
101
|
# IRB.conf[:IGNORE_EOF] = false
|
109
102
|
# IRB.conf[:PROMPT_MODE] = :DEFAULT
|
110
103
|
# IRB.conf[:PROMPT] = {...}
|
104
|
+
# IRB.conf[:DEBUG_LEVEL]=0
|
111
105
|
#
|
112
106
|
# === Auto indentation
|
113
107
|
#
|
114
|
-
# To
|
108
|
+
# To enable auto-indent mode in irb, add the following to your +.irbrc+:
|
115
109
|
#
|
116
|
-
# IRB.conf[:AUTO_INDENT] =
|
110
|
+
# IRB.conf[:AUTO_INDENT] = true
|
117
111
|
#
|
118
112
|
# === Autocompletion
|
119
113
|
#
|
@@ -123,22 +117,15 @@ require "irb/version"
|
|
123
117
|
#
|
124
118
|
# === History
|
125
119
|
#
|
126
|
-
# By default, irb will store
|
127
|
-
# <code>IRB.conf[:HISTORY_FILE]</code> (<code>~/.irb_history</code> by default).
|
120
|
+
# By default, irb disables history and will not store any commands you used.
|
128
121
|
#
|
129
|
-
# If you want to
|
122
|
+
# If you want to enable history, add the following to your +.irbrc+:
|
130
123
|
#
|
131
|
-
# IRB.conf[:SAVE_HISTORY] =
|
124
|
+
# IRB.conf[:SAVE_HISTORY] = 1000
|
132
125
|
#
|
133
|
-
#
|
134
|
-
#
|
135
|
-
# The history of _resuls_ of commands evaluated is not stored by default,
|
136
|
-
# but can be turned on to be stored with this +.irbrc+ setting:
|
126
|
+
# This will now store the last 1000 commands in <code>~/.irb_history</code>.
|
137
127
|
#
|
138
|
-
#
|
139
|
-
#
|
140
|
-
# See IRB::Context#eval_history= and History class. The history of command
|
141
|
-
# results is not permanently saved in any file.
|
128
|
+
# See IRB::Context#save_history= for more information.
|
142
129
|
#
|
143
130
|
# == Customizing the IRB Prompt
|
144
131
|
#
|
@@ -149,7 +136,7 @@ require "irb/version"
|
|
149
136
|
# This example can be used in your +.irbrc+
|
150
137
|
#
|
151
138
|
# IRB.conf[:PROMPT][:MY_PROMPT] = { # name of prompt mode
|
152
|
-
# :AUTO_INDENT =>
|
139
|
+
# :AUTO_INDENT => true, # enables auto-indent mode
|
153
140
|
# :PROMPT_I => ">> ", # simple prompt
|
154
141
|
# :PROMPT_S => nil, # prompt for continuated strings
|
155
142
|
# :PROMPT_C => nil, # prompt for continuated statement
|
@@ -178,7 +165,6 @@ require "irb/version"
|
|
178
165
|
#
|
179
166
|
# IRB.conf[:PROMPT_MODE][:DEFAULT] = {
|
180
167
|
# :PROMPT_I => "%N(%m):%03n:%i> ",
|
181
|
-
# :PROMPT_N => "%N(%m):%03n:%i> ",
|
182
168
|
# :PROMPT_S => "%N(%m):%03n:%i%l ",
|
183
169
|
# :PROMPT_C => "%N(%m):%03n:%i* ",
|
184
170
|
# :RETURN => "%s\n" # used to printf
|
@@ -282,9 +268,7 @@ require "irb/version"
|
|
282
268
|
# <code>_</code>::
|
283
269
|
# The value command executed, as a local variable
|
284
270
|
# <code>__</code>::
|
285
|
-
# The history of evaluated commands
|
286
|
-
# <code>IRB.conf[:EVAL_HISTORY]</code> is not +nil+ (which is the default).
|
287
|
-
# See also IRB::Context#eval_history= and IRB::History.
|
271
|
+
# The history of evaluated commands
|
288
272
|
# <code>__[line_no]</code>::
|
289
273
|
# Returns the evaluation value at the given line number, +line_no+.
|
290
274
|
# If +line_no+ is a negative, the return value +line_no+ many lines before
|
@@ -421,41 +405,14 @@ module IRB
|
|
421
405
|
end
|
422
406
|
|
423
407
|
class Irb
|
424
|
-
ASSIGNMENT_NODE_TYPES = [
|
425
|
-
# Local, instance, global, class, constant, instance, and index assignment:
|
426
|
-
# "foo = bar",
|
427
|
-
# "@foo = bar",
|
428
|
-
# "$foo = bar",
|
429
|
-
# "@@foo = bar",
|
430
|
-
# "::Foo = bar",
|
431
|
-
# "a::Foo = bar",
|
432
|
-
# "Foo = bar"
|
433
|
-
# "foo.bar = 1"
|
434
|
-
# "foo[1] = bar"
|
435
|
-
:assign,
|
436
|
-
|
437
|
-
# Operation assignment:
|
438
|
-
# "foo += bar"
|
439
|
-
# "foo -= bar"
|
440
|
-
# "foo ||= bar"
|
441
|
-
# "foo &&= bar"
|
442
|
-
:opassign,
|
443
|
-
|
444
|
-
# Multiple assignment:
|
445
|
-
# "foo, bar = 1, 2
|
446
|
-
:massign,
|
447
|
-
]
|
448
|
-
# Note: instance and index assignment expressions could also be written like:
|
449
|
-
# "foo.bar=(1)" and "foo.[]=(1, bar)", when expressed that way, the former
|
450
|
-
# be parsed as :assign and echo will be suppressed, but the latter is
|
451
|
-
# parsed as a :method_add_arg and the output won't be suppressed
|
452
|
-
|
453
408
|
# Creates a new irb session
|
454
|
-
def initialize(workspace = nil, input_method = nil)
|
455
|
-
@context = Context.new(self, workspace, input_method)
|
409
|
+
def initialize(workspace = nil, input_method = nil, output_method = nil)
|
410
|
+
@context = Context.new(self, workspace, input_method, output_method)
|
456
411
|
@context.main.extend ExtendCommandBundle
|
457
412
|
@signal_status = :IN_IRB
|
413
|
+
|
458
414
|
@scanner = RubyLex.new
|
415
|
+
@scanner.exception_on_syntax_error = false
|
459
416
|
end
|
460
417
|
|
461
418
|
def run(conf = IRB.conf)
|
@@ -501,16 +458,14 @@ module IRB
|
|
501
458
|
else
|
502
459
|
@context.io.prompt = p = ""
|
503
460
|
end
|
504
|
-
if @context.auto_indent_mode
|
461
|
+
if @context.auto_indent_mode
|
505
462
|
unless ltype
|
506
|
-
|
507
|
-
ind = prompt(prompt_i, ltype, indent, line_no)[/.*\z/].size +
|
463
|
+
ind = prompt(@context.prompt_i, ltype, indent, line_no)[/.*\z/].size +
|
508
464
|
indent * 2 - p.size
|
509
465
|
ind += 2 if continue
|
510
466
|
@context.io.prompt = p + " " * ind if ind > 0
|
511
467
|
end
|
512
468
|
end
|
513
|
-
@context.io.prompt
|
514
469
|
end
|
515
470
|
|
516
471
|
@scanner.set_input(@context.io) do
|
@@ -531,14 +486,12 @@ module IRB
|
|
531
486
|
end
|
532
487
|
end
|
533
488
|
|
534
|
-
@scanner.set_auto_indent(@context) if @context.auto_indent_mode
|
535
|
-
|
536
489
|
@scanner.each_top_level_statement do |line, line_no|
|
537
490
|
signal_status(:IN_EVAL) do
|
538
491
|
begin
|
539
|
-
line.untaint
|
492
|
+
line.untaint
|
540
493
|
@context.evaluate(line, line_no, exception: exc)
|
541
|
-
output_value if @context.echo?
|
494
|
+
output_value if @context.echo?
|
542
495
|
rescue Interrupt => exc
|
543
496
|
rescue SystemExit, SignalException
|
544
497
|
raise
|
@@ -710,18 +663,10 @@ module IRB
|
|
710
663
|
when "l"
|
711
664
|
ltype
|
712
665
|
when "i"
|
713
|
-
if
|
714
|
-
|
715
|
-
"-".rjust($1.to_i)
|
716
|
-
else
|
717
|
-
"-"
|
718
|
-
end
|
666
|
+
if $1
|
667
|
+
format("%" + $1 + "d", indent)
|
719
668
|
else
|
720
|
-
|
721
|
-
format("%" + $1 + "d", indent)
|
722
|
-
else
|
723
|
-
indent.to_s
|
724
|
-
end
|
669
|
+
indent.to_s
|
725
670
|
end
|
726
671
|
when "n"
|
727
672
|
if $1
|
@@ -757,21 +702,6 @@ module IRB
|
|
757
702
|
format("#<%s: %s>", self.class, ary.join(", "))
|
758
703
|
end
|
759
704
|
|
760
|
-
def assignment_expression?(line)
|
761
|
-
# Try to parse the line and check if the last of possibly multiple
|
762
|
-
# expressions is an assignment type.
|
763
|
-
|
764
|
-
# If the expression is invalid, Ripper.sexp should return nil which will
|
765
|
-
# result in false being returned. Any valid expression should return an
|
766
|
-
# s-expression where the second selement of the top level array is an
|
767
|
-
# array of parsed expressions. The first element of each expression is the
|
768
|
-
# expression's type.
|
769
|
-
verbose, $VERBOSE = $VERBOSE, nil
|
770
|
-
result = ASSIGNMENT_NODE_TYPES.include?(Ripper.sexp(line)&.dig(1,-1,0))
|
771
|
-
$VERBOSE = verbose
|
772
|
-
result
|
773
|
-
end
|
774
|
-
|
775
705
|
ATTR_TTY = "\e[%sm"
|
776
706
|
def ATTR_TTY.[](*a) self % a.join(";"); end
|
777
707
|
ATTR_PLAIN = ""
|
@@ -819,8 +749,8 @@ class Binding
|
|
819
749
|
#
|
820
750
|
# Potato.new
|
821
751
|
#
|
822
|
-
# Running
|
823
|
-
#
|
752
|
+
# Running +ruby potato.rb+ will open an IRB session where +binding.irb+ is
|
753
|
+
# called, and you will see the following:
|
824
754
|
#
|
825
755
|
# $ ruby potato.rb
|
826
756
|
#
|
@@ -850,7 +780,7 @@ class Binding
|
|
850
780
|
# irb(#<Potato:0x00007feea1916670>):004:0> @cooked = true
|
851
781
|
# => true
|
852
782
|
#
|
853
|
-
# You can exit the IRB session with the
|
783
|
+
# You can exit the IRB session with the `exit` command. Note that exiting will
|
854
784
|
# resume execution where +binding.irb+ had paused it, as you can see from the
|
855
785
|
# output printed to standard output in this example:
|
856
786
|
#
|
@@ -860,11 +790,9 @@ class Binding
|
|
860
790
|
#
|
861
791
|
# See IRB@IRB+Usage for more information.
|
862
792
|
def irb
|
863
|
-
IRB.setup(
|
793
|
+
IRB.setup(eval("__FILE__"), argv: [])
|
864
794
|
workspace = IRB::WorkSpace.new(self)
|
865
795
|
STDOUT.print(workspace.code_around_binding)
|
866
|
-
|
867
|
-
binding_irb.context.irb_path = File.expand_path(source_location[0])
|
868
|
-
binding_irb.run(IRB.conf)
|
796
|
+
IRB::Irb.new(workspace).run(IRB.conf)
|
869
797
|
end
|
870
798
|
end
|
data/lib/irb/cmd/fork.rb
CHANGED
data/lib/irb/cmd/help.rb
CHANGED
@@ -9,18 +9,17 @@
|
|
9
9
|
#
|
10
10
|
#
|
11
11
|
|
12
|
+
require 'rdoc/ri/driver'
|
13
|
+
|
12
14
|
require_relative "nop"
|
13
15
|
|
14
16
|
# :stopdoc:
|
15
17
|
module IRB
|
16
18
|
module ExtendCommand
|
17
19
|
class Help < Nop
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
rescue LoadError, SystemExit
|
22
|
-
IRB::ExtendCommand::Help.remove_method(:execute)
|
23
|
-
# raise NoMethodError in ensure
|
20
|
+
begin
|
21
|
+
Ri = RDoc::RI::Driver.new
|
22
|
+
rescue SystemExit
|
24
23
|
else
|
25
24
|
def execute(*names)
|
26
25
|
if names.empty?
|
@@ -36,9 +35,6 @@ module IRB
|
|
36
35
|
end
|
37
36
|
nil
|
38
37
|
end
|
39
|
-
nil
|
40
|
-
ensure
|
41
|
-
execute(*names)
|
42
38
|
end
|
43
39
|
end
|
44
40
|
end
|