irb 1.7.1 → 1.13.2
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 +4 -4
- data/.document +1 -1
- data/Gemfile +10 -1
- data/README.md +265 -20
- data/Rakefile +13 -10
- data/doc/irb/irb.rd.ja +1 -3
- data/irb.gemspec +2 -1
- data/lib/irb/cmd/nop.rb +3 -52
- data/lib/irb/color.rb +4 -2
- data/lib/irb/command/backtrace.rb +17 -0
- data/lib/irb/command/base.rb +62 -0
- data/lib/irb/command/break.rb +17 -0
- data/lib/irb/command/catch.rb +17 -0
- data/lib/irb/command/chws.rb +40 -0
- data/lib/irb/command/context.rb +16 -0
- data/lib/irb/{cmd → command}/continue.rb +3 -3
- data/lib/irb/command/debug.rb +71 -0
- data/lib/irb/{cmd → command}/delete.rb +3 -3
- data/lib/irb/command/disable_irb.rb +19 -0
- data/lib/irb/command/edit.rb +63 -0
- data/lib/irb/command/exit.rb +18 -0
- data/lib/irb/{cmd → command}/finish.rb +3 -3
- data/lib/irb/command/force_exit.rb +18 -0
- data/lib/irb/command/help.rb +83 -0
- data/lib/irb/command/history.rb +45 -0
- data/lib/irb/command/info.rb +17 -0
- data/lib/irb/command/internal_helpers.rb +27 -0
- data/lib/irb/{cmd → command}/irb_info.rb +7 -7
- data/lib/irb/{cmd → command}/load.rb +23 -8
- data/lib/irb/{cmd → command}/ls.rb +42 -19
- data/lib/irb/{cmd → command}/measure.rb +18 -17
- data/lib/irb/{cmd → command}/next.rb +3 -3
- data/lib/irb/command/pushws.rb +65 -0
- data/lib/irb/command/show_doc.rb +51 -0
- data/lib/irb/command/show_source.rb +74 -0
- data/lib/irb/{cmd → command}/step.rb +3 -3
- data/lib/irb/command/subirb.rb +123 -0
- data/lib/irb/{cmd → command}/whereami.rb +3 -5
- data/lib/irb/command.rb +23 -0
- data/lib/irb/completion.rb +133 -102
- data/lib/irb/context.rb +182 -66
- data/lib/irb/debug/ui.rb +103 -0
- data/lib/irb/{cmd/debug.rb → debug.rb} +53 -59
- data/lib/irb/default_commands.rb +265 -0
- data/lib/irb/easter-egg.rb +16 -6
- data/lib/irb/ext/change-ws.rb +6 -8
- data/lib/irb/ext/{history.rb → eval_history.rb} +7 -7
- data/lib/irb/ext/loader.rb +4 -4
- data/lib/irb/ext/multi-irb.rb +5 -5
- data/lib/irb/ext/tracer.rb +12 -51
- data/lib/irb/ext/use-loader.rb +6 -8
- data/lib/irb/ext/workspaces.rb +10 -34
- data/lib/irb/frame.rb +1 -1
- data/lib/irb/help.rb +3 -3
- data/lib/irb/helper_method/base.rb +16 -0
- data/lib/irb/helper_method/conf.rb +11 -0
- data/lib/irb/helper_method.rb +29 -0
- data/lib/irb/{ext/save-history.rb → history.rb} +20 -58
- data/lib/irb/init.rb +154 -58
- data/lib/irb/input-method.rb +238 -203
- data/lib/irb/inspector.rb +3 -3
- data/lib/irb/lc/error.rb +1 -11
- data/lib/irb/lc/help-message +4 -0
- data/lib/irb/lc/ja/error.rb +1 -11
- data/lib/irb/lc/ja/help-message +13 -0
- data/lib/irb/locale.rb +2 -2
- data/lib/irb/nesting_parser.rb +13 -3
- data/lib/irb/notifier.rb +1 -1
- data/lib/irb/output-method.rb +2 -8
- data/lib/irb/pager.rb +91 -0
- data/lib/irb/ruby-lex.rb +391 -471
- data/lib/irb/ruby_logo.aa +43 -0
- data/lib/irb/source_finder.rb +139 -0
- data/lib/irb/statement.rb +80 -0
- data/lib/irb/version.rb +3 -3
- data/lib/irb/workspace.rb +24 -4
- data/lib/irb/ws-for-case-2.rb +1 -1
- data/lib/irb/xmp.rb +3 -3
- data/lib/irb.rb +1232 -604
- data/man/irb.1 +7 -0
- metadata +60 -32
- data/lib/irb/cmd/backtrace.rb +0 -21
- data/lib/irb/cmd/break.rb +0 -21
- data/lib/irb/cmd/catch.rb +0 -21
- data/lib/irb/cmd/chws.rb +0 -36
- data/lib/irb/cmd/edit.rb +0 -61
- data/lib/irb/cmd/help.rb +0 -23
- data/lib/irb/cmd/info.rb +0 -21
- data/lib/irb/cmd/pushws.rb +0 -45
- data/lib/irb/cmd/show_cmds.rb +0 -39
- data/lib/irb/cmd/show_doc.rb +0 -48
- data/lib/irb/cmd/show_source.rb +0 -113
- data/lib/irb/cmd/subirb.rb +0 -66
- data/lib/irb/extend-command.rb +0 -356
- data/lib/irb/src_encoding.rb +0 -7
data/man/irb.1
CHANGED
@@ -140,6 +140,13 @@ Use autocompletion.
|
|
140
140
|
Don't use autocompletion.
|
141
141
|
.Pp
|
142
142
|
.Pp
|
143
|
+
.It Fl -regexp-completor
|
144
|
+
Use regexp based completion.
|
145
|
+
.Pp
|
146
|
+
.It Fl -type-completor
|
147
|
+
Use type based completion.
|
148
|
+
.Pp
|
149
|
+
.Pp
|
143
150
|
.It Fl -verbose
|
144
151
|
Show details.
|
145
152
|
.Pp
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: irb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.13.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- aycabta
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2024-06-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: reline
|
@@ -17,14 +17,28 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 0.
|
20
|
+
version: 0.4.2
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 0.
|
27
|
+
version: 0.4.2
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: rdoc
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 4.0.0
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 4.0.0
|
28
42
|
description: Interactive Ruby command-line tool for REPL (Read Eval Print Loop).
|
29
43
|
email:
|
30
44
|
- aycabta@gmail.com
|
@@ -46,46 +60,58 @@ files:
|
|
46
60
|
- exe/irb
|
47
61
|
- irb.gemspec
|
48
62
|
- lib/irb.rb
|
49
|
-
- lib/irb/cmd/backtrace.rb
|
50
|
-
- lib/irb/cmd/break.rb
|
51
|
-
- lib/irb/cmd/catch.rb
|
52
|
-
- lib/irb/cmd/chws.rb
|
53
|
-
- lib/irb/cmd/continue.rb
|
54
|
-
- lib/irb/cmd/debug.rb
|
55
|
-
- lib/irb/cmd/delete.rb
|
56
|
-
- lib/irb/cmd/edit.rb
|
57
|
-
- lib/irb/cmd/finish.rb
|
58
|
-
- lib/irb/cmd/help.rb
|
59
|
-
- lib/irb/cmd/info.rb
|
60
|
-
- lib/irb/cmd/irb_info.rb
|
61
|
-
- lib/irb/cmd/load.rb
|
62
|
-
- lib/irb/cmd/ls.rb
|
63
|
-
- lib/irb/cmd/measure.rb
|
64
|
-
- lib/irb/cmd/next.rb
|
65
63
|
- lib/irb/cmd/nop.rb
|
66
|
-
- lib/irb/cmd/pushws.rb
|
67
|
-
- lib/irb/cmd/show_cmds.rb
|
68
|
-
- lib/irb/cmd/show_doc.rb
|
69
|
-
- lib/irb/cmd/show_source.rb
|
70
|
-
- lib/irb/cmd/step.rb
|
71
|
-
- lib/irb/cmd/subirb.rb
|
72
|
-
- lib/irb/cmd/whereami.rb
|
73
64
|
- lib/irb/color.rb
|
74
65
|
- lib/irb/color_printer.rb
|
66
|
+
- lib/irb/command.rb
|
67
|
+
- lib/irb/command/backtrace.rb
|
68
|
+
- lib/irb/command/base.rb
|
69
|
+
- lib/irb/command/break.rb
|
70
|
+
- lib/irb/command/catch.rb
|
71
|
+
- lib/irb/command/chws.rb
|
72
|
+
- lib/irb/command/context.rb
|
73
|
+
- lib/irb/command/continue.rb
|
74
|
+
- lib/irb/command/debug.rb
|
75
|
+
- lib/irb/command/delete.rb
|
76
|
+
- lib/irb/command/disable_irb.rb
|
77
|
+
- lib/irb/command/edit.rb
|
78
|
+
- lib/irb/command/exit.rb
|
79
|
+
- lib/irb/command/finish.rb
|
80
|
+
- lib/irb/command/force_exit.rb
|
81
|
+
- lib/irb/command/help.rb
|
82
|
+
- lib/irb/command/history.rb
|
83
|
+
- lib/irb/command/info.rb
|
84
|
+
- lib/irb/command/internal_helpers.rb
|
85
|
+
- lib/irb/command/irb_info.rb
|
86
|
+
- lib/irb/command/load.rb
|
87
|
+
- lib/irb/command/ls.rb
|
88
|
+
- lib/irb/command/measure.rb
|
89
|
+
- lib/irb/command/next.rb
|
90
|
+
- lib/irb/command/pushws.rb
|
91
|
+
- lib/irb/command/show_doc.rb
|
92
|
+
- lib/irb/command/show_source.rb
|
93
|
+
- lib/irb/command/step.rb
|
94
|
+
- lib/irb/command/subirb.rb
|
95
|
+
- lib/irb/command/whereami.rb
|
75
96
|
- lib/irb/completion.rb
|
76
97
|
- lib/irb/context.rb
|
98
|
+
- lib/irb/debug.rb
|
99
|
+
- lib/irb/debug/ui.rb
|
100
|
+
- lib/irb/default_commands.rb
|
77
101
|
- lib/irb/easter-egg.rb
|
78
102
|
- lib/irb/ext/change-ws.rb
|
79
|
-
- lib/irb/ext/
|
103
|
+
- lib/irb/ext/eval_history.rb
|
80
104
|
- lib/irb/ext/loader.rb
|
81
105
|
- lib/irb/ext/multi-irb.rb
|
82
|
-
- lib/irb/ext/save-history.rb
|
83
106
|
- lib/irb/ext/tracer.rb
|
84
107
|
- lib/irb/ext/use-loader.rb
|
85
108
|
- lib/irb/ext/workspaces.rb
|
86
|
-
- lib/irb/extend-command.rb
|
87
109
|
- lib/irb/frame.rb
|
88
110
|
- lib/irb/help.rb
|
111
|
+
- lib/irb/helper_method.rb
|
112
|
+
- lib/irb/helper_method/base.rb
|
113
|
+
- lib/irb/helper_method/conf.rb
|
114
|
+
- lib/irb/history.rb
|
89
115
|
- lib/irb/init.rb
|
90
116
|
- lib/irb/input-method.rb
|
91
117
|
- lib/irb/inspector.rb
|
@@ -97,9 +123,11 @@ files:
|
|
97
123
|
- lib/irb/nesting_parser.rb
|
98
124
|
- lib/irb/notifier.rb
|
99
125
|
- lib/irb/output-method.rb
|
126
|
+
- lib/irb/pager.rb
|
100
127
|
- lib/irb/ruby-lex.rb
|
101
128
|
- lib/irb/ruby_logo.aa
|
102
|
-
- lib/irb/
|
129
|
+
- lib/irb/source_finder.rb
|
130
|
+
- lib/irb/statement.rb
|
103
131
|
- lib/irb/version.rb
|
104
132
|
- lib/irb/workspace.rb
|
105
133
|
- lib/irb/ws-for-case-2.rb
|
@@ -129,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
157
|
- !ruby/object:Gem::Version
|
130
158
|
version: '0'
|
131
159
|
requirements: []
|
132
|
-
rubygems_version: 3.5.
|
160
|
+
rubygems_version: 3.5.11
|
133
161
|
signing_key:
|
134
162
|
specification_version: 4
|
135
163
|
summary: Interactive Ruby command-line tool for REPL (Read Eval Print Loop).
|
data/lib/irb/cmd/backtrace.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "debug"
|
4
|
-
|
5
|
-
module IRB
|
6
|
-
# :stopdoc:
|
7
|
-
|
8
|
-
module ExtendCommand
|
9
|
-
class Backtrace < DebugCommand
|
10
|
-
def self.transform_args(args)
|
11
|
-
args&.dump
|
12
|
-
end
|
13
|
-
|
14
|
-
def execute(*args)
|
15
|
-
super(pre_cmds: ["backtrace", *args].join(" "))
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
# :startdoc:
|
21
|
-
end
|
data/lib/irb/cmd/break.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "debug"
|
4
|
-
|
5
|
-
module IRB
|
6
|
-
# :stopdoc:
|
7
|
-
|
8
|
-
module ExtendCommand
|
9
|
-
class Break < DebugCommand
|
10
|
-
def self.transform_args(args)
|
11
|
-
args&.dump
|
12
|
-
end
|
13
|
-
|
14
|
-
def execute(args = nil)
|
15
|
-
super(pre_cmds: "break #{args}")
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
# :startdoc:
|
21
|
-
end
|
data/lib/irb/cmd/catch.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "debug"
|
4
|
-
|
5
|
-
module IRB
|
6
|
-
# :stopdoc:
|
7
|
-
|
8
|
-
module ExtendCommand
|
9
|
-
class Catch < DebugCommand
|
10
|
-
def self.transform_args(args)
|
11
|
-
args&.dump
|
12
|
-
end
|
13
|
-
|
14
|
-
def execute(*args)
|
15
|
-
super(pre_cmds: ["catch", *args].join(" "))
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
# :startdoc:
|
21
|
-
end
|
data/lib/irb/cmd/chws.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
# frozen_string_literal: false
|
2
|
-
#
|
3
|
-
# change-ws.rb -
|
4
|
-
# by Keiju ISHITSUKA(keiju@ruby-lang.org)
|
5
|
-
#
|
6
|
-
|
7
|
-
require_relative "nop"
|
8
|
-
require_relative "../ext/change-ws"
|
9
|
-
|
10
|
-
module IRB
|
11
|
-
# :stopdoc:
|
12
|
-
|
13
|
-
module ExtendCommand
|
14
|
-
|
15
|
-
class CurrentWorkingWorkspace < Nop
|
16
|
-
category "IRB"
|
17
|
-
description "Show the current workspace."
|
18
|
-
|
19
|
-
def execute(*obj)
|
20
|
-
irb_context.main
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
class ChangeWorkspace < Nop
|
25
|
-
category "IRB"
|
26
|
-
description "Change the current workspace to an object."
|
27
|
-
|
28
|
-
def execute(*obj)
|
29
|
-
irb_context.change_workspace(*obj)
|
30
|
-
irb_context.main
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
# :startdoc:
|
36
|
-
end
|
data/lib/irb/cmd/edit.rb
DELETED
@@ -1,61 +0,0 @@
|
|
1
|
-
require 'shellwords'
|
2
|
-
require_relative "nop"
|
3
|
-
|
4
|
-
module IRB
|
5
|
-
# :stopdoc:
|
6
|
-
|
7
|
-
module ExtendCommand
|
8
|
-
class Edit < Nop
|
9
|
-
category "Misc"
|
10
|
-
description 'Open a file with the editor command defined with `ENV["EDITOR"]`.'
|
11
|
-
|
12
|
-
class << self
|
13
|
-
def transform_args(args)
|
14
|
-
# Return a string literal as is for backward compatibility
|
15
|
-
if args.nil? || args.empty? || string_literal?(args)
|
16
|
-
args
|
17
|
-
else # Otherwise, consider the input as a String for convenience
|
18
|
-
args.strip.dump
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def execute(*args)
|
24
|
-
path = args.first
|
25
|
-
|
26
|
-
if path.nil? && (irb_path = @irb_context.irb_path)
|
27
|
-
path = irb_path
|
28
|
-
end
|
29
|
-
|
30
|
-
if !File.exist?(path)
|
31
|
-
require_relative "show_source"
|
32
|
-
|
33
|
-
source =
|
34
|
-
begin
|
35
|
-
ShowSource.find_source(path, @irb_context)
|
36
|
-
rescue NameError
|
37
|
-
# if user enters a path that doesn't exist, it'll cause NameError when passed here because find_source would try to evaluate it as well
|
38
|
-
# in this case, we should just ignore the error
|
39
|
-
end
|
40
|
-
|
41
|
-
if source && File.exist?(source.file)
|
42
|
-
path = source.file
|
43
|
-
else
|
44
|
-
puts "Can not find file: #{path}"
|
45
|
-
return
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
if editor = ENV['EDITOR']
|
50
|
-
puts "command: '#{editor}'"
|
51
|
-
puts " path: #{path}"
|
52
|
-
system(*Shellwords.split(editor), path)
|
53
|
-
else
|
54
|
-
puts "Can not find editor setting: ENV['EDITOR']"
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
# :startdoc:
|
61
|
-
end
|
data/lib/irb/cmd/help.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "show_doc"
|
4
|
-
|
5
|
-
module IRB
|
6
|
-
module ExtendCommand
|
7
|
-
class Help < ShowDoc
|
8
|
-
category "Context"
|
9
|
-
description "[DEPRECATED] Enter the mode to look up RI documents."
|
10
|
-
|
11
|
-
DEPRECATION_MESSAGE = <<~MSG
|
12
|
-
[Deprecation] The `help` command will be repurposed to display command help in the future.
|
13
|
-
For RI document lookup, please use the `show_doc` command instead.
|
14
|
-
For command help, please use `show_cmds` for now.
|
15
|
-
MSG
|
16
|
-
|
17
|
-
def execute(*names)
|
18
|
-
warn DEPRECATION_MESSAGE
|
19
|
-
super
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
data/lib/irb/cmd/info.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "debug"
|
4
|
-
|
5
|
-
module IRB
|
6
|
-
# :stopdoc:
|
7
|
-
|
8
|
-
module ExtendCommand
|
9
|
-
class Info < DebugCommand
|
10
|
-
def self.transform_args(args)
|
11
|
-
args&.dump
|
12
|
-
end
|
13
|
-
|
14
|
-
def execute(*args)
|
15
|
-
super(pre_cmds: ["info", *args].join(" "))
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
# :startdoc:
|
21
|
-
end
|
data/lib/irb/cmd/pushws.rb
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
# frozen_string_literal: false
|
2
|
-
#
|
3
|
-
# change-ws.rb -
|
4
|
-
# by Keiju ISHITSUKA(keiju@ruby-lang.org)
|
5
|
-
#
|
6
|
-
|
7
|
-
require_relative "nop"
|
8
|
-
require_relative "../ext/workspaces"
|
9
|
-
|
10
|
-
module IRB
|
11
|
-
# :stopdoc:
|
12
|
-
|
13
|
-
module ExtendCommand
|
14
|
-
class Workspaces < Nop
|
15
|
-
category "IRB"
|
16
|
-
description "Show workspaces."
|
17
|
-
|
18
|
-
def execute(*obj)
|
19
|
-
irb_context.workspaces.collect{|ws| ws.main}
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
class PushWorkspace < Workspaces
|
24
|
-
category "IRB"
|
25
|
-
description "Push an object to the workspace stack."
|
26
|
-
|
27
|
-
def execute(*obj)
|
28
|
-
irb_context.push_workspace(*obj)
|
29
|
-
super
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
class PopWorkspace < Workspaces
|
34
|
-
category "IRB"
|
35
|
-
description "Pop a workspace from the workspace stack."
|
36
|
-
|
37
|
-
def execute(*obj)
|
38
|
-
irb_context.pop_workspace(*obj)
|
39
|
-
super
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
# :startdoc:
|
45
|
-
end
|
data/lib/irb/cmd/show_cmds.rb
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "stringio"
|
4
|
-
require_relative "nop"
|
5
|
-
|
6
|
-
module IRB
|
7
|
-
# :stopdoc:
|
8
|
-
|
9
|
-
module ExtendCommand
|
10
|
-
class ShowCmds < Nop
|
11
|
-
category "IRB"
|
12
|
-
description "List all available commands and their description."
|
13
|
-
|
14
|
-
def execute(*args)
|
15
|
-
commands_info = IRB::ExtendCommandBundle.all_commands_info
|
16
|
-
commands_grouped_by_categories = commands_info.group_by { |cmd| cmd[:category] }
|
17
|
-
longest_cmd_name_length = commands_info.map { |c| c[:display_name] }.max { |a, b| a.length <=> b.length }.length
|
18
|
-
|
19
|
-
output = StringIO.new
|
20
|
-
|
21
|
-
commands_grouped_by_categories.each do |category, cmds|
|
22
|
-
output.puts Color.colorize(category, [:BOLD])
|
23
|
-
|
24
|
-
cmds.each do |cmd|
|
25
|
-
output.puts " #{cmd[:display_name].to_s.ljust(longest_cmd_name_length)} #{cmd[:description]}"
|
26
|
-
end
|
27
|
-
|
28
|
-
output.puts
|
29
|
-
end
|
30
|
-
|
31
|
-
puts output.string
|
32
|
-
|
33
|
-
nil
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
# :startdoc:
|
39
|
-
end
|
data/lib/irb/cmd/show_doc.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "nop"
|
4
|
-
|
5
|
-
module IRB
|
6
|
-
module ExtendCommand
|
7
|
-
class ShowDoc < Nop
|
8
|
-
class << self
|
9
|
-
def transform_args(args)
|
10
|
-
# Return a string literal as is for backward compatibility
|
11
|
-
if args.empty? || string_literal?(args)
|
12
|
-
args
|
13
|
-
else # Otherwise, consider the input as a String for convenience
|
14
|
-
args.strip.dump
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
category "Context"
|
20
|
-
description "Enter the mode to look up RI documents."
|
21
|
-
|
22
|
-
def execute(*names)
|
23
|
-
require 'rdoc/ri/driver'
|
24
|
-
|
25
|
-
unless ShowDoc.const_defined?(:Ri)
|
26
|
-
opts = RDoc::RI::Driver.process_args([])
|
27
|
-
ShowDoc.const_set(:Ri, RDoc::RI::Driver.new(opts))
|
28
|
-
end
|
29
|
-
|
30
|
-
if names.empty?
|
31
|
-
Ri.interactive
|
32
|
-
else
|
33
|
-
names.each do |name|
|
34
|
-
begin
|
35
|
-
Ri.display_name(name.to_s)
|
36
|
-
rescue RDoc::RI::Error
|
37
|
-
puts $!.message
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
nil
|
43
|
-
rescue LoadError, SystemExit
|
44
|
-
warn "Can't display document because `rdoc` is not installed."
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
data/lib/irb/cmd/show_source.rb
DELETED
@@ -1,113 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "nop"
|
4
|
-
require_relative "../color"
|
5
|
-
require_relative "../ruby-lex"
|
6
|
-
|
7
|
-
module IRB
|
8
|
-
# :stopdoc:
|
9
|
-
|
10
|
-
module ExtendCommand
|
11
|
-
class ShowSource < Nop
|
12
|
-
category "Context"
|
13
|
-
description "Show the source code of a given method or constant."
|
14
|
-
|
15
|
-
class << self
|
16
|
-
def transform_args(args)
|
17
|
-
# Return a string literal as is for backward compatibility
|
18
|
-
if args.empty? || string_literal?(args)
|
19
|
-
args
|
20
|
-
else # Otherwise, consider the input as a String for convenience
|
21
|
-
args.strip.dump
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def find_source(str, irb_context)
|
26
|
-
case str
|
27
|
-
when /\A[A-Z]\w*(::[A-Z]\w*)*\z/ # Const::Name
|
28
|
-
eval(str, irb_context.workspace.binding) # trigger autoload
|
29
|
-
base = irb_context.workspace.binding.receiver.yield_self { |r| r.is_a?(Module) ? r : Object }
|
30
|
-
file, line = base.const_source_location(str)
|
31
|
-
when /\A(?<owner>[A-Z]\w*(::[A-Z]\w*)*)#(?<method>[^ :.]+)\z/ # Class#method
|
32
|
-
owner = eval(Regexp.last_match[:owner], irb_context.workspace.binding)
|
33
|
-
method = Regexp.last_match[:method]
|
34
|
-
if owner.respond_to?(:instance_method)
|
35
|
-
methods = owner.instance_methods + owner.private_instance_methods
|
36
|
-
file, line = owner.instance_method(method).source_location if methods.include?(method.to_sym)
|
37
|
-
end
|
38
|
-
when /\A((?<receiver>.+)(\.|::))?(?<method>[^ :.]+)\z/ # method, receiver.method, receiver::method
|
39
|
-
receiver = eval(Regexp.last_match[:receiver] || 'self', irb_context.workspace.binding)
|
40
|
-
method = Regexp.last_match[:method]
|
41
|
-
file, line = receiver.method(method).source_location if receiver.respond_to?(method, true)
|
42
|
-
end
|
43
|
-
if file && line
|
44
|
-
Source.new(file: file, first_line: line, last_line: find_end(file, line, irb_context))
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
private
|
49
|
-
|
50
|
-
def find_end(file, first_line, irb_context)
|
51
|
-
return first_line unless File.exist?(file)
|
52
|
-
lex = RubyLex.new(irb_context)
|
53
|
-
lines = File.read(file).lines[(first_line - 1)..-1]
|
54
|
-
tokens = RubyLex.ripper_lex_without_warning(lines.join)
|
55
|
-
prev_tokens = []
|
56
|
-
|
57
|
-
# chunk with line number
|
58
|
-
tokens.chunk { |tok| tok.pos[0] }.each do |lnum, chunk|
|
59
|
-
code = lines[0..lnum].join
|
60
|
-
prev_tokens.concat chunk
|
61
|
-
continue = lex.should_continue?(prev_tokens)
|
62
|
-
syntax = lex.check_code_syntax(code)
|
63
|
-
if !continue && syntax == :valid
|
64
|
-
return first_line + lnum
|
65
|
-
end
|
66
|
-
end
|
67
|
-
first_line
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
def execute(str = nil)
|
72
|
-
unless str.is_a?(String)
|
73
|
-
puts "Error: Expected a string but got #{str.inspect}"
|
74
|
-
return
|
75
|
-
end
|
76
|
-
|
77
|
-
source = self.class.find_source(str, @irb_context)
|
78
|
-
if source && File.exist?(source.file)
|
79
|
-
show_source(source)
|
80
|
-
else
|
81
|
-
puts "Error: Couldn't locate a definition for #{str}"
|
82
|
-
end
|
83
|
-
nil
|
84
|
-
end
|
85
|
-
|
86
|
-
private
|
87
|
-
|
88
|
-
# @param [IRB::ExtendCommand::ShowSource::Source] source
|
89
|
-
def show_source(source)
|
90
|
-
puts
|
91
|
-
puts "#{bold("From")}: #{source.file}:#{source.first_line}"
|
92
|
-
puts
|
93
|
-
code = IRB::Color.colorize_code(File.read(source.file))
|
94
|
-
puts code.lines[(source.first_line - 1)...source.last_line].join
|
95
|
-
puts
|
96
|
-
end
|
97
|
-
|
98
|
-
def bold(str)
|
99
|
-
Color.colorize(str, [:BOLD])
|
100
|
-
end
|
101
|
-
|
102
|
-
Source = Struct.new(
|
103
|
-
:file, # @param [String] - file name
|
104
|
-
:first_line, # @param [String] - first line
|
105
|
-
:last_line, # @param [String] - last line
|
106
|
-
keyword_init: true,
|
107
|
-
)
|
108
|
-
private_constant :Source
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
# :startdoc:
|
113
|
-
end
|
data/lib/irb/cmd/subirb.rb
DELETED
@@ -1,66 +0,0 @@
|
|
1
|
-
# frozen_string_literal: false
|
2
|
-
#
|
3
|
-
# multi.rb -
|
4
|
-
# by Keiju ISHITSUKA(keiju@ruby-lang.org)
|
5
|
-
#
|
6
|
-
|
7
|
-
require_relative "nop"
|
8
|
-
|
9
|
-
module IRB
|
10
|
-
# :stopdoc:
|
11
|
-
|
12
|
-
module ExtendCommand
|
13
|
-
class MultiIRBCommand < Nop
|
14
|
-
def initialize(conf)
|
15
|
-
super
|
16
|
-
extend_irb_context
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
def extend_irb_context
|
22
|
-
# this extension patches IRB context like IRB.CurrentContext
|
23
|
-
require_relative "../ext/multi-irb"
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
class IrbCommand < MultiIRBCommand
|
28
|
-
category "IRB"
|
29
|
-
description "Start a child IRB."
|
30
|
-
|
31
|
-
def execute(*obj)
|
32
|
-
IRB.irb(nil, *obj)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
class Jobs < MultiIRBCommand
|
37
|
-
category "IRB"
|
38
|
-
description "List of current sessions."
|
39
|
-
|
40
|
-
def execute
|
41
|
-
IRB.JobManager
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
class Foreground < MultiIRBCommand
|
46
|
-
category "IRB"
|
47
|
-
description "Switches to the session of the given number."
|
48
|
-
|
49
|
-
def execute(key = nil)
|
50
|
-
raise CommandArgumentError.new("Please specify the id of target IRB job (listed in the `jobs` command).") unless key
|
51
|
-
IRB.JobManager.switch(key)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
class Kill < MultiIRBCommand
|
56
|
-
category "IRB"
|
57
|
-
description "Kills the session with the given number."
|
58
|
-
|
59
|
-
def execute(*keys)
|
60
|
-
IRB.JobManager.kill(*keys)
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
# :startdoc:
|
66
|
-
end
|