irb 1.1.1 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +5 -0
- data/README.md +3 -3
- data/doc/irb/irb-tools.rd.ja +184 -0
- data/doc/irb/irb.rd.ja +411 -0
- data/irb.gemspec +58 -1
- data/lib/irb.rb +106 -35
- data/lib/irb/cmd/fork.rb +1 -1
- data/lib/irb/cmd/help.rb +9 -5
- data/lib/irb/color.rb +233 -0
- data/lib/irb/completion.rb +126 -33
- data/lib/irb/context.rb +105 -65
- data/lib/irb/ext/history.rb +47 -9
- data/lib/irb/ext/multi-irb.rb +7 -7
- data/lib/irb/ext/save-history.rb +17 -5
- data/lib/irb/ext/tracer.rb +14 -1
- data/lib/irb/ext/use-loader.rb +3 -0
- data/lib/irb/extend-command.rb +70 -48
- data/lib/irb/frame.rb +12 -7
- data/lib/irb/init.rb +30 -20
- data/lib/irb/input-method.rb +108 -3
- data/lib/irb/inspector.rb +12 -2
- data/lib/irb/lc/error.rb +55 -16
- data/lib/irb/lc/help-message +9 -6
- data/lib/irb/lc/ja/error.rb +55 -14
- data/lib/irb/lc/ja/help-message +9 -6
- data/lib/irb/locale.rb +5 -1
- data/lib/irb/notifier.rb +12 -8
- data/lib/irb/output-method.rb +6 -6
- data/lib/irb/ruby-lex.rb +345 -1039
- data/lib/irb/ruby_logo.aa +38 -0
- data/lib/irb/version.rb +2 -2
- data/lib/irb/workspace.rb +58 -20
- data/man/irb.1 +207 -0
- metadata +21 -6
- data/.gitignore +0 -9
- data/.travis.yml +0 -6
- data/lib/irb/ruby-token.rb +0 -267
- data/lib/irb/slex.rb +0 -282
@@ -0,0 +1,38 @@
|
|
1
|
+
|
2
|
+
-+smJYYN?mm-
|
3
|
+
HB"BBYT TQg NggT
|
4
|
+
9Q+g Nm,T 8g NJW
|
5
|
+
YS+ N2NJ"Sg N?
|
6
|
+
BQg #( gT Nggggk J
|
7
|
+
5j NJ NJ NNge
|
8
|
+
#Q #JJ NgT N(
|
9
|
+
@j bj mT J
|
10
|
+
Bj @/d NJ (
|
11
|
+
#q #(( NgT #J
|
12
|
+
5d #(t mT $d
|
13
|
+
#q @(@J NJB;
|
14
|
+
@( 5d ? HHH H HQmgggggggmN qD
|
15
|
+
5d #uN 2QdH E O
|
16
|
+
5 5JSd Nd NJH @d j
|
17
|
+
Fd @J4d s NQH #d (
|
18
|
+
#( #o6d Nd NgH #d #d
|
19
|
+
4 B&Od v NgT #d F
|
20
|
+
#( 9JGd NH NgUd F
|
21
|
+
#d #GJQ d NP $
|
22
|
+
#J #U+#Q N Q # j
|
23
|
+
j /W BQ+ BQ d NJ NJ
|
24
|
+
- NjJH HBIjTQggPJQgW N W k #J
|
25
|
+
#J b HYWgggN j s Nag d NN b #d
|
26
|
+
#J 5- D s Ngg N d Nd F
|
27
|
+
Fd BKH2 #+ s NNgg J Q J ]
|
28
|
+
F H @ J N y K(d P I
|
29
|
+
F4 E N? #d y #Q NJ E j
|
30
|
+
F W Nd q m Bg NxW N(H-
|
31
|
+
F d b @ m Hd gW vKJ
|
32
|
+
NJ d K d s Bg aT FDd
|
33
|
+
b # d N m BQ mV N>
|
34
|
+
e5 Nd #d NggggggQWH HHHH NJ -
|
35
|
+
m7 NW H N HSVO1z=?11-
|
36
|
+
NgTH bB kH WBHWWHBHWmQgg&gggggNNN
|
37
|
+
NNggggggNN
|
38
|
+
|
data/lib/irb/version.rb
CHANGED
data/lib/irb/workspace.rb
CHANGED
@@ -9,6 +9,9 @@
|
|
9
9
|
#
|
10
10
|
#
|
11
11
|
#
|
12
|
+
|
13
|
+
require "delegate"
|
14
|
+
|
12
15
|
module IRB # :nodoc:
|
13
16
|
class WorkSpace
|
14
17
|
# Creates a new workspace.
|
@@ -49,17 +52,21 @@ EOF
|
|
49
52
|
@binding = BINDING_QUEUE.pop
|
50
53
|
|
51
54
|
when 3 # binding in function on TOPLEVEL_BINDING(default)
|
52
|
-
@binding = eval("
|
55
|
+
@binding = eval("self.class.send(:remove_method, :irb_binding) if defined?(irb_binding); private; def irb_binding; binding; end; irb_binding",
|
53
56
|
TOPLEVEL_BINDING,
|
54
57
|
__FILE__,
|
55
58
|
__LINE__ - 3)
|
56
59
|
end
|
57
60
|
end
|
61
|
+
|
58
62
|
if main.empty?
|
59
63
|
@main = eval("self", @binding)
|
60
64
|
else
|
61
65
|
@main = main[0]
|
62
|
-
|
66
|
+
end
|
67
|
+
IRB.conf[:__MAIN__] = @main
|
68
|
+
|
69
|
+
unless main.empty?
|
63
70
|
case @main
|
64
71
|
when Module
|
65
72
|
@binding = eval("IRB.conf[:__MAIN__].module_eval('binding', __FILE__, __LINE__)", @binding, __FILE__, __LINE__)
|
@@ -67,10 +74,32 @@ EOF
|
|
67
74
|
begin
|
68
75
|
@binding = eval("IRB.conf[:__MAIN__].instance_eval('binding', __FILE__, __LINE__)", @binding, __FILE__, __LINE__)
|
69
76
|
rescue TypeError
|
70
|
-
|
77
|
+
fail CantChangeBinding, @main.inspect
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
case @main
|
83
|
+
when Object
|
84
|
+
use_delegator = @main.frozen?
|
85
|
+
else
|
86
|
+
use_delegator = true
|
87
|
+
end
|
88
|
+
|
89
|
+
if use_delegator
|
90
|
+
@main = SimpleDelegator.new(@main)
|
91
|
+
IRB.conf[:__MAIN__] = @main
|
92
|
+
@main.singleton_class.class_eval do
|
93
|
+
private
|
94
|
+
define_method(:exit) do |*a, &b|
|
95
|
+
# Do nothing, will be overridden
|
71
96
|
end
|
97
|
+
define_method(:binding, Kernel.instance_method(:binding))
|
98
|
+
define_method(:local_variables, Kernel.instance_method(:local_variables))
|
72
99
|
end
|
100
|
+
@binding = eval("IRB.conf[:__MAIN__].instance_eval('binding', __FILE__, __LINE__)", @binding, *@binding.source_location)
|
73
101
|
end
|
102
|
+
|
74
103
|
@binding.local_variable_set(:_, nil)
|
75
104
|
end
|
76
105
|
|
@@ -95,46 +124,55 @@ EOF
|
|
95
124
|
|
96
125
|
# error message manipulator
|
97
126
|
def filter_backtrace(bt)
|
127
|
+
return nil if bt =~ /\/irb\/.*\.rb/
|
128
|
+
return nil if bt =~ /\/irb\.rb/
|
98
129
|
case IRB.conf[:CONTEXT_MODE]
|
99
|
-
when 0
|
100
|
-
return nil if bt =~ /\(irb_local_binding\)/
|
101
130
|
when 1
|
102
|
-
if
|
103
|
-
bt =~ %r!irb/.*\.rb! or
|
104
|
-
bt =~ /irb\.rb/)
|
105
|
-
return nil
|
106
|
-
end
|
107
|
-
when 2
|
108
|
-
return nil if bt =~ /irb\/.*\.rb/
|
109
|
-
return nil if bt =~ /irb\.rb/
|
131
|
+
return nil if bt =~ %r!/tmp/irb-binding!
|
110
132
|
when 3
|
111
|
-
return nil if bt =~ /irb\/.*\.rb/
|
112
|
-
return nil if bt =~ /irb\.rb/
|
113
133
|
bt = bt.sub(/:\s*in `irb_binding'/, '')
|
114
134
|
end
|
115
135
|
bt
|
116
136
|
end
|
117
137
|
|
118
138
|
def code_around_binding
|
119
|
-
|
139
|
+
if @binding.respond_to?(:source_location)
|
140
|
+
file, pos = @binding.source_location
|
141
|
+
else
|
142
|
+
file, pos = @binding.eval('[__FILE__, __LINE__]')
|
143
|
+
end
|
120
144
|
|
121
|
-
|
145
|
+
if defined?(::SCRIPT_LINES__[file]) && lines = ::SCRIPT_LINES__[file]
|
146
|
+
code = ::SCRIPT_LINES__[file].join('')
|
147
|
+
else
|
122
148
|
begin
|
123
|
-
|
149
|
+
code = File.read(file)
|
124
150
|
rescue SystemCallError
|
125
151
|
return
|
126
152
|
end
|
127
153
|
end
|
154
|
+
|
155
|
+
# NOT using #use_colorize? of IRB.conf[:MAIN_CONTEXT] because this method may be called before IRB::Irb#run
|
156
|
+
use_colorize = IRB.conf.fetch(:USE_COLORIZE, true)
|
157
|
+
if use_colorize
|
158
|
+
lines = Color.colorize_code(code).lines
|
159
|
+
else
|
160
|
+
lines = code.lines
|
161
|
+
end
|
128
162
|
pos -= 1
|
129
163
|
|
130
164
|
start_pos = [pos - 5, 0].max
|
131
165
|
end_pos = [pos + 5, lines.size - 1].min
|
132
166
|
|
133
|
-
|
167
|
+
if use_colorize
|
168
|
+
fmt = " %2s #{Color.colorize("%#{end_pos.to_s.length}d", [:BLUE, :BOLD])}: %s"
|
169
|
+
else
|
170
|
+
fmt = " %2s %#{end_pos.to_s.length}d: %s"
|
171
|
+
end
|
134
172
|
body = (start_pos..end_pos).map do |current_pos|
|
135
173
|
sprintf(fmt, pos == current_pos ? '=>' : '', current_pos + 1, lines[current_pos])
|
136
174
|
end.join("")
|
137
|
-
"\nFrom: #{file} @ line #{pos + 1} :\n\n#{body}\n"
|
175
|
+
"\nFrom: #{file} @ line #{pos + 1} :\n\n#{body}#{Color.clear}\n"
|
138
176
|
end
|
139
177
|
|
140
178
|
def IRB.delete_caller
|
data/man/irb.1
ADDED
@@ -0,0 +1,207 @@
|
|
1
|
+
.\"Ruby is copyrighted by Yukihiro Matsumoto <matz@netlab.jp>.
|
2
|
+
.Dd August 11, 2019
|
3
|
+
.Dt IRB \&1 "Ruby Programmer's Reference Guide"
|
4
|
+
.Os UNIX
|
5
|
+
.Sh NAME
|
6
|
+
.Nm irb
|
7
|
+
.Nd Interactive Ruby Shell
|
8
|
+
.Sh SYNOPSIS
|
9
|
+
.Nm
|
10
|
+
.Op Fl -version
|
11
|
+
.Op Fl dfUw
|
12
|
+
.Op Fl I Ar directory
|
13
|
+
.Op Fl r Ar library
|
14
|
+
.Op Fl E Ar external Ns Op : Ns Ar internal
|
15
|
+
.Op Fl W Ns Op Ar level
|
16
|
+
.Op Fl - Ns Oo no Oc Ns inspect
|
17
|
+
.Op Fl - Ns Oo no Oc Ns multiline
|
18
|
+
.Op Fl - Ns Oo no Oc Ns singleline
|
19
|
+
.Op Fl - Ns Oo no Oc Ns echo
|
20
|
+
.Op Fl - Ns Oo no Oc Ns colorize
|
21
|
+
.Op Fl - Ns Oo no Oc Ns verbose
|
22
|
+
.Op Fl -prompt Ar mode
|
23
|
+
.Op Fl -prompt-mode Ar mode
|
24
|
+
.Op Fl -inf-ruby-mode
|
25
|
+
.Op Fl -simple-prompt
|
26
|
+
.Op Fl -noprompt
|
27
|
+
.Op Fl -tracer
|
28
|
+
.Op Fl -back-trace-limit Ar n
|
29
|
+
.Op Fl -
|
30
|
+
.Op program_file
|
31
|
+
.Op argument ...
|
32
|
+
.Pp
|
33
|
+
.Sh DESCRIPTION
|
34
|
+
.Nm
|
35
|
+
is the REPL(read-eval-print loop) environment for Ruby programs.
|
36
|
+
.Pp
|
37
|
+
.Sh OPTIONS
|
38
|
+
.Bl -tag -width "1234567890123" -compact
|
39
|
+
.Pp
|
40
|
+
.It Fl -version
|
41
|
+
Prints the version of
|
42
|
+
.Nm .
|
43
|
+
.Pp
|
44
|
+
.It Fl E Ar external Ns Op : Ns Ar internal
|
45
|
+
.It Fl -encoding Ar external Ns Op : Ns Ar internal
|
46
|
+
Same as `ruby -E' .
|
47
|
+
Specifies the default value(s) for external encodings and internal encoding. Values should be separated with colon (:).
|
48
|
+
.Pp
|
49
|
+
You can omit the one for internal encodings, then the value
|
50
|
+
.Pf ( Li "Encoding.default_internal" ) will be nil.
|
51
|
+
.Pp
|
52
|
+
.It Fl I Ar path
|
53
|
+
Same as `ruby -I' .
|
54
|
+
Specifies
|
55
|
+
.Li $LOAD_PATH
|
56
|
+
directory
|
57
|
+
.Pp
|
58
|
+
.It Fl U
|
59
|
+
Same as `ruby -U' .
|
60
|
+
Sets the default value for internal encodings
|
61
|
+
.Pf ( Li "Encoding.default_internal" ) to UTF-8.
|
62
|
+
.Pp
|
63
|
+
.It Fl d
|
64
|
+
Same as `ruby -d' .
|
65
|
+
Sets
|
66
|
+
.Li $DEBUG
|
67
|
+
to true.
|
68
|
+
.Pp
|
69
|
+
.It Fl f
|
70
|
+
Suppresses read of
|
71
|
+
.Pa ~/.irbrc .
|
72
|
+
.Pp
|
73
|
+
.It Fl w
|
74
|
+
Same as `ruby -w' .
|
75
|
+
.Pp
|
76
|
+
.Pp
|
77
|
+
.It Fl W
|
78
|
+
Same as `ruby -W' .
|
79
|
+
.Pp
|
80
|
+
.It Fl h
|
81
|
+
.It Fl -help
|
82
|
+
Prints a summary of the options.
|
83
|
+
.Pp
|
84
|
+
.It Fl r Ar library
|
85
|
+
Same as `ruby -r'.
|
86
|
+
Causes irb to load the library using require.
|
87
|
+
.Pp
|
88
|
+
.It Fl -inspect
|
89
|
+
Uses `inspect' for output (default except for bc mode)
|
90
|
+
.Pp
|
91
|
+
.It Fl -noinspect
|
92
|
+
Doesn't use inspect for output
|
93
|
+
.Pp
|
94
|
+
.It Fl -multiline
|
95
|
+
Uses multiline editor module.
|
96
|
+
.Pp
|
97
|
+
.It Fl -nomultiline
|
98
|
+
Doesn't use multiline editor module.
|
99
|
+
.Pp
|
100
|
+
.It Fl -singleline
|
101
|
+
Uses singleline editor module.
|
102
|
+
.Pp
|
103
|
+
.It Fl -nosingleline
|
104
|
+
Doesn't use singleline editor module.
|
105
|
+
.Pp
|
106
|
+
.Pp
|
107
|
+
.It Fl -echo
|
108
|
+
Show result(default).
|
109
|
+
.Pp
|
110
|
+
.It Fl -noecho
|
111
|
+
Don't show result.
|
112
|
+
.Pp
|
113
|
+
.Pp
|
114
|
+
.It Fl -colorize
|
115
|
+
Use colorization.
|
116
|
+
.Pp
|
117
|
+
.It Fl -nocolorize
|
118
|
+
Don't use colorization.
|
119
|
+
.Pp
|
120
|
+
.Pp
|
121
|
+
.It Fl -verbose
|
122
|
+
Show details.
|
123
|
+
.Pp
|
124
|
+
.It Fl -noverbose
|
125
|
+
Don't show details.
|
126
|
+
.Pp
|
127
|
+
.It Fl -prompt Ar mode
|
128
|
+
.It Fl -prompt-mode Ar mode
|
129
|
+
Switch prompt mode. Pre-defined prompt modes are
|
130
|
+
`default', `simple', `xmp' and `inf-ruby'.
|
131
|
+
.Pp
|
132
|
+
.It Fl -inf-ruby-mode
|
133
|
+
Uses prompt appropriate for inf-ruby-mode on emacs.
|
134
|
+
Suppresses --multiline and --singleline.
|
135
|
+
.Pp
|
136
|
+
.It Fl -simple-prompt
|
137
|
+
Makes prompts simple.
|
138
|
+
.Pp
|
139
|
+
.It Fl -noprompt
|
140
|
+
No prompt mode.
|
141
|
+
.Pp
|
142
|
+
.It Fl -tracer
|
143
|
+
Displays trace for each execution of commands.
|
144
|
+
.Pp
|
145
|
+
.It Fl -back-trace-limit Ar n
|
146
|
+
Displays backtrace top
|
147
|
+
.Ar n
|
148
|
+
and tail
|
149
|
+
.Ar n Ns .
|
150
|
+
The default value is 16.
|
151
|
+
.El
|
152
|
+
.Pp
|
153
|
+
.Sh ENVIRONMENT
|
154
|
+
.Bl -tag -compact
|
155
|
+
.It Ev IRBRC
|
156
|
+
.Pp
|
157
|
+
.El
|
158
|
+
.Pp
|
159
|
+
Also
|
160
|
+
.Nm
|
161
|
+
depends on same variables as
|
162
|
+
.Xr ruby 1 .
|
163
|
+
.Pp
|
164
|
+
.Sh FILES
|
165
|
+
.Bl -tag -compact
|
166
|
+
.It Pa ~/.irbrc
|
167
|
+
Personal irb initialization.
|
168
|
+
.Pp
|
169
|
+
.El
|
170
|
+
.Pp
|
171
|
+
.Sh EXAMPLES
|
172
|
+
.Dl % irb
|
173
|
+
.Dl irb(main):001:0> Ic 1 + 1
|
174
|
+
.Dl 2
|
175
|
+
.Dl irb(main):002:0> Ic def t(x)
|
176
|
+
.Dl irb(main):003:1> Ic x + 1
|
177
|
+
.Dl irb(main):004:1> Ic end
|
178
|
+
.Dl => :t
|
179
|
+
.Dl irb(main):005:0> Ic t(3)
|
180
|
+
.Dl => 4
|
181
|
+
.Dl irb(main):006:0> Ic if t(3) == 4
|
182
|
+
.Dl irb(main):007:1> Ic p :ok
|
183
|
+
.Dl irb(main):008:1> Ic end
|
184
|
+
.Dl :ok
|
185
|
+
.Dl => :ok
|
186
|
+
.Dl irb(main):009:0> Ic quit
|
187
|
+
.Dl %
|
188
|
+
.Pp
|
189
|
+
.Sh SEE ALSO
|
190
|
+
.Xr ruby 1 .
|
191
|
+
.Pp
|
192
|
+
.Sh REPORTING BUGS
|
193
|
+
.Bl -bullet
|
194
|
+
.It
|
195
|
+
Security vulnerabilities should be reported via an email to
|
196
|
+
.Mt security@ruby-lang.org .
|
197
|
+
Reported problems will be published after being fixed.
|
198
|
+
.Pp
|
199
|
+
.It
|
200
|
+
Other bugs and feature requests can be reported via the
|
201
|
+
Ruby Issue Tracking System
|
202
|
+
.Pq Lk https://bugs.ruby-lang.org/ .
|
203
|
+
Do not report security vulnerabilities
|
204
|
+
via this system because it publishes the vulnerabilities immediately.
|
205
|
+
.El
|
206
|
+
.Sh AUTHORS
|
207
|
+
Written by Keiju ISHITSUKA.
|
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.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Keiju ISHITSUKA
|
@@ -10,6 +10,20 @@ bindir: exe
|
|
10
10
|
cert_chain: []
|
11
11
|
date: 2019-12-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: reline
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.0.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.0.1
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bundler
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -46,14 +60,14 @@ executables:
|
|
46
60
|
extensions: []
|
47
61
|
extra_rdoc_files: []
|
48
62
|
files:
|
49
|
-
- ".gitignore"
|
50
|
-
- ".travis.yml"
|
51
63
|
- Gemfile
|
52
64
|
- LICENSE.txt
|
53
65
|
- README.md
|
54
66
|
- Rakefile
|
55
67
|
- bin/console
|
56
68
|
- bin/setup
|
69
|
+
- doc/irb/irb-tools.rd.ja
|
70
|
+
- doc/irb/irb.rd.ja
|
57
71
|
- exe/irb
|
58
72
|
- irb.gemspec
|
59
73
|
- lib/irb.rb
|
@@ -64,6 +78,7 @@ files:
|
|
64
78
|
- lib/irb/cmd/nop.rb
|
65
79
|
- lib/irb/cmd/pushws.rb
|
66
80
|
- lib/irb/cmd/subirb.rb
|
81
|
+
- lib/irb/color.rb
|
67
82
|
- lib/irb/completion.rb
|
68
83
|
- lib/irb/context.rb
|
69
84
|
- lib/irb/ext/change-ws.rb
|
@@ -91,13 +106,13 @@ files:
|
|
91
106
|
- lib/irb/notifier.rb
|
92
107
|
- lib/irb/output-method.rb
|
93
108
|
- lib/irb/ruby-lex.rb
|
94
|
-
- lib/irb/
|
95
|
-
- lib/irb/slex.rb
|
109
|
+
- lib/irb/ruby_logo.aa
|
96
110
|
- lib/irb/src_encoding.rb
|
97
111
|
- lib/irb/version.rb
|
98
112
|
- lib/irb/workspace.rb
|
99
113
|
- lib/irb/ws-for-case-2.rb
|
100
114
|
- lib/irb/xmp.rb
|
115
|
+
- man/irb.1
|
101
116
|
homepage: https://github.com/ruby/irb
|
102
117
|
licenses:
|
103
118
|
- BSD-2-Clause
|
@@ -110,7 +125,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
110
125
|
requirements:
|
111
126
|
- - ">="
|
112
127
|
- !ruby/object:Gem::Version
|
113
|
-
version: '
|
128
|
+
version: '2.5'
|
114
129
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
130
|
requirements:
|
116
131
|
- - ">="
|