irb 1.10.1 → 1.11.1
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/README.md +38 -11
- data/irb.gemspec +1 -1
- data/lib/irb/cmd/debug.rb +1 -1
- data/lib/irb/cmd/exit.rb +22 -0
- data/lib/irb/cmd/measure.rb +10 -13
- data/lib/irb/cmd/show_source.rb +5 -8
- data/lib/irb/completion.rb +7 -1
- data/lib/irb/context.rb +4 -16
- data/lib/irb/extend-command.rb +6 -12
- data/lib/irb/help.rb +1 -1
- data/lib/irb/init.rb +10 -10
- data/lib/irb/input-method.rb +8 -7
- data/lib/irb/source_finder.rb +9 -14
- data/lib/irb/version.rb +2 -2
- data/lib/irb/xmp.rb +2 -2
- data/lib/irb.rb +801 -313
- metadata +6 -5
data/lib/irb.rb
CHANGED
@@ -22,277 +22,818 @@ require_relative "irb/easter-egg"
|
|
22
22
|
require_relative "irb/debug"
|
23
23
|
require_relative "irb/pager"
|
24
24
|
|
25
|
-
# IRB
|
26
|
-
# expressions read from the standard input.
|
27
|
-
#
|
28
|
-
# The +irb+ command from your shell will start the interpreter.
|
29
|
-
#
|
30
|
-
# == Usage
|
31
|
-
#
|
32
|
-
# Use of irb is easy if you know Ruby.
|
33
|
-
#
|
34
|
-
# When executing irb, prompts are displayed as follows. Then, enter the Ruby
|
35
|
-
# expression. An input is executed when it is syntactically complete.
|
36
|
-
#
|
37
|
-
# $ irb
|
38
|
-
# irb(main):001:0> 1+2
|
39
|
-
# #=> 3
|
40
|
-
# irb(main):002:0> class Foo
|
41
|
-
# irb(main):003:1> def foo
|
42
|
-
# irb(main):004:2> print 1
|
43
|
-
# irb(main):005:2> end
|
44
|
-
# irb(main):006:1> end
|
45
|
-
# #=> nil
|
46
|
-
#
|
47
|
-
# The singleline editor module or multiline editor module can be used with irb.
|
48
|
-
# Use of multiline editor is default if it's installed.
|
49
|
-
#
|
50
|
-
# == Command line options
|
51
|
-
#
|
52
|
-
# :include: ./irb/lc/help-message
|
53
|
-
#
|
54
|
-
# == Commands
|
55
|
-
#
|
56
|
-
# The following commands are available on IRB.
|
57
|
-
#
|
58
|
-
# * cwws
|
59
|
-
# * Show the current workspace.
|
60
|
-
# * cb, cws, chws
|
61
|
-
# * Change the current workspace to an object.
|
62
|
-
# * bindings, workspaces
|
63
|
-
# * Show workspaces.
|
64
|
-
# * pushb, pushws
|
65
|
-
# * Push an object to the workspace stack.
|
66
|
-
# * popb, popws
|
67
|
-
# * Pop a workspace from the workspace stack.
|
68
|
-
# * load
|
69
|
-
# * Load a Ruby file.
|
70
|
-
# * require
|
71
|
-
# * Require a Ruby file.
|
72
|
-
# * source
|
73
|
-
# * Loads a given file in the current session.
|
74
|
-
# * irb
|
75
|
-
# * Start a child IRB.
|
76
|
-
# * jobs
|
77
|
-
# * List of current sessions.
|
78
|
-
# * fg
|
79
|
-
# * Switches to the session of the given number.
|
80
|
-
# * kill
|
81
|
-
# * Kills the session with the given number.
|
82
|
-
# * help
|
83
|
-
# * Enter the mode to look up RI documents.
|
84
|
-
# * irb_info
|
85
|
-
# * Show information about IRB.
|
86
|
-
# * ls
|
87
|
-
# * Show methods, constants, and variables.
|
88
|
-
# -g [query] or -G [query] allows you to filter out the output.
|
89
|
-
# * measure
|
90
|
-
# * measure enables the mode to measure processing time. measure :off disables it.
|
91
|
-
# * $, show_source
|
92
|
-
# * Show the source code of a given method or constant.
|
93
|
-
# * @, whereami
|
94
|
-
# * Show the source code around binding.irb again.
|
95
|
-
# * debug
|
96
|
-
# * Start the debugger of debug.gem.
|
97
|
-
# * break, delete, next, step, continue, finish, backtrace, info, catch
|
98
|
-
# * Start the debugger of debug.gem and run the command on it.
|
99
|
-
#
|
100
|
-
# == Configuration
|
101
|
-
#
|
102
|
-
# IRB reads a personal initialization file when it's invoked.
|
103
|
-
# IRB searches a file in the following order and loads the first one found.
|
104
|
-
#
|
105
|
-
# * <tt>$IRBRC</tt> (if <tt>$IRBRC</tt> is set)
|
106
|
-
# * <tt>$XDG_CONFIG_HOME/irb/irbrc</tt> (if <tt>$XDG_CONFIG_HOME</tt> is set)
|
107
|
-
# * <tt>~/.irbrc</tt>
|
108
|
-
# * +.config/irb/irbrc+
|
109
|
-
# * +.irbrc+
|
110
|
-
# * +irb.rc+
|
111
|
-
# * +_irbrc+
|
112
|
-
# * <code>$irbrc</code>
|
113
|
-
#
|
114
|
-
# The following are alternatives to the command line options. To use them type
|
115
|
-
# as follows in an +irb+ session:
|
116
|
-
#
|
117
|
-
# IRB.conf[:IRB_NAME]="irb"
|
118
|
-
# IRB.conf[:INSPECT_MODE]=nil
|
119
|
-
# IRB.conf[:IRB_RC] = nil
|
120
|
-
# IRB.conf[:BACK_TRACE_LIMIT]=16
|
121
|
-
# IRB.conf[:USE_LOADER] = false
|
122
|
-
# IRB.conf[:USE_MULTILINE] = nil
|
123
|
-
# IRB.conf[:USE_SINGLELINE] = nil
|
124
|
-
# IRB.conf[:USE_COLORIZE] = true
|
125
|
-
# IRB.conf[:USE_TRACER] = false
|
126
|
-
# IRB.conf[:USE_AUTOCOMPLETE] = true
|
127
|
-
# IRB.conf[:IGNORE_SIGINT] = true
|
128
|
-
# IRB.conf[:IGNORE_EOF] = false
|
129
|
-
# IRB.conf[:PROMPT_MODE] = :DEFAULT
|
130
|
-
# IRB.conf[:PROMPT] = {...}
|
131
|
-
#
|
132
|
-
# === Auto indentation
|
133
|
-
#
|
134
|
-
# To disable auto-indent mode in irb, add the following to your +.irbrc+:
|
135
|
-
#
|
136
|
-
# IRB.conf[:AUTO_INDENT] = false
|
137
|
-
#
|
138
|
-
# === Autocompletion
|
139
|
-
#
|
140
|
-
# To disable autocompletion for irb, add the following to your +.irbrc+:
|
141
|
-
#
|
142
|
-
# IRB.conf[:USE_AUTOCOMPLETE] = false
|
143
|
-
#
|
144
|
-
# To enable enhanced completion using type information, add the following to your +.irbrc+:
|
145
|
-
#
|
146
|
-
# IRB.conf[:COMPLETOR] = :type
|
147
|
-
#
|
148
|
-
# === History
|
149
|
-
#
|
150
|
-
# By default, irb will store the last 1000 commands you used in
|
151
|
-
# <code>IRB.conf[:HISTORY_FILE]</code> (<code>~/.irb_history</code> by default).
|
152
|
-
#
|
153
|
-
# If you want to disable history, add the following to your +.irbrc+:
|
154
|
-
#
|
155
|
-
# IRB.conf[:SAVE_HISTORY] = nil
|
156
|
-
#
|
157
|
-
# See IRB::Context#save_history= for more information.
|
158
|
-
#
|
159
|
-
# The history of _results_ of commands evaluated is not stored by default,
|
160
|
-
# but can be turned on to be stored with this +.irbrc+ setting:
|
161
|
-
#
|
162
|
-
# IRB.conf[:EVAL_HISTORY] = <number>
|
163
|
-
#
|
164
|
-
# See IRB::Context#eval_history= and EvalHistory class. The history of command
|
165
|
-
# results is not permanently saved in any file.
|
166
|
-
#
|
167
|
-
# == Customizing the IRB Prompt
|
168
|
-
#
|
169
|
-
# In order to customize the prompt, you can change the following Hash:
|
170
|
-
#
|
171
|
-
# IRB.conf[:PROMPT]
|
172
|
-
#
|
173
|
-
# This example can be used in your +.irbrc+
|
174
|
-
#
|
175
|
-
# IRB.conf[:PROMPT][:MY_PROMPT] = { # name of prompt mode
|
176
|
-
# :AUTO_INDENT => false, # disables auto-indent mode
|
177
|
-
# :PROMPT_I => ">> ", # simple prompt
|
178
|
-
# :PROMPT_S => nil, # prompt for continuated strings
|
179
|
-
# :PROMPT_C => nil, # prompt for continuated statement
|
180
|
-
# :RETURN => " ==>%s\n" # format to return value
|
181
|
-
# }
|
182
|
-
#
|
183
|
-
# IRB.conf[:PROMPT_MODE] = :MY_PROMPT
|
184
|
-
#
|
185
|
-
# Or, invoke irb with the above prompt mode by:
|
186
|
-
#
|
187
|
-
# irb --prompt my-prompt
|
188
|
-
#
|
189
|
-
# Constants +PROMPT_I+, +PROMPT_S+ and +PROMPT_C+ specify the format. In the
|
190
|
-
# prompt specification, some special strings are available:
|
191
|
-
#
|
192
|
-
# %N # command name which is running
|
193
|
-
# %m # to_s of main object (self)
|
194
|
-
# %M # inspect of main object (self)
|
195
|
-
# %l # type of string(", ', /, ]), `]' is inner %w[...]
|
196
|
-
# %NNi # indent level. NN is digits and means as same as printf("%NNd").
|
197
|
-
# # It can be omitted
|
198
|
-
# %NNn # line number.
|
199
|
-
# %% # %
|
200
|
-
#
|
201
|
-
# For instance, the default prompt mode is defined as follows:
|
202
|
-
#
|
203
|
-
# IRB.conf[:PROMPT_MODE][:DEFAULT] = {
|
204
|
-
# :PROMPT_I => "%N(%m):%03n> ",
|
205
|
-
# :PROMPT_S => "%N(%m):%03n%l ",
|
206
|
-
# :PROMPT_C => "%N(%m):%03n* ",
|
207
|
-
# :RETURN => "%s\n" # used to printf
|
208
|
-
# }
|
209
|
-
#
|
210
|
-
# irb comes with a number of available modes:
|
211
|
-
#
|
212
|
-
# # :NULL:
|
213
|
-
# # :PROMPT_I:
|
214
|
-
# # :PROMPT_S:
|
215
|
-
# # :PROMPT_C:
|
216
|
-
# # :RETURN: |
|
217
|
-
# # %s
|
218
|
-
# # :DEFAULT:
|
219
|
-
# # :PROMPT_I: ! '%N(%m):%03n> '
|
220
|
-
# # :PROMPT_S: ! '%N(%m):%03n%l '
|
221
|
-
# # :PROMPT_C: ! '%N(%m):%03n* '
|
222
|
-
# # :RETURN: |
|
223
|
-
# # => %s
|
224
|
-
# # :CLASSIC:
|
225
|
-
# # :PROMPT_I: ! '%N(%m):%03n:%i> '
|
226
|
-
# # :PROMPT_S: ! '%N(%m):%03n:%i%l '
|
227
|
-
# # :PROMPT_C: ! '%N(%m):%03n:%i* '
|
228
|
-
# # :RETURN: |
|
229
|
-
# # %s
|
230
|
-
# # :SIMPLE:
|
231
|
-
# # :PROMPT_I: ! '>> '
|
232
|
-
# # :PROMPT_S:
|
233
|
-
# # :PROMPT_C: ! '?> '
|
234
|
-
# # :RETURN: |
|
235
|
-
# # => %s
|
236
|
-
# # :INF_RUBY:
|
237
|
-
# # :PROMPT_I: ! '%N(%m):%03n> '
|
238
|
-
# # :PROMPT_S:
|
239
|
-
# # :PROMPT_C:
|
240
|
-
# # :RETURN: |
|
241
|
-
# # %s
|
242
|
-
# # :AUTO_INDENT: true
|
243
|
-
# # :XMP:
|
244
|
-
# # :PROMPT_I:
|
245
|
-
# # :PROMPT_S:
|
246
|
-
# # :PROMPT_C:
|
247
|
-
# # :RETURN: |2
|
248
|
-
# # ==>%s
|
25
|
+
# == \IRB
|
249
26
|
#
|
250
|
-
#
|
27
|
+
# \Module \IRB ("Interactive Ruby") provides a shell-like interface
|
28
|
+
# that supports user interaction with the Ruby interpreter.
|
251
29
|
#
|
252
|
-
#
|
253
|
-
#
|
30
|
+
# It operates as a <i>read-eval-print loop</i>
|
31
|
+
# ({REPL}[https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop])
|
32
|
+
# that:
|
254
33
|
#
|
255
|
-
#
|
34
|
+
# - <b>_Reads_</b> each character as you type.
|
35
|
+
# You can modify the \IRB context to change the way input works.
|
36
|
+
# See {Input}[rdoc-ref:IRB@Input].
|
37
|
+
# - <b>_Evaluates_</b> the code each time it has read a syntactically complete passage.
|
38
|
+
# - <b>_Prints_</b> after evaluating.
|
39
|
+
# You can modify the \IRB context to change the way output works.
|
40
|
+
# See {Output}[rdoc-ref:IRB@Output].
|
256
41
|
#
|
257
|
-
#
|
42
|
+
# Example:
|
258
43
|
#
|
259
|
-
#
|
260
|
-
#
|
44
|
+
# $ irb
|
45
|
+
# irb(main):001> File.basename(Dir.pwd)
|
46
|
+
# => "irb"
|
47
|
+
# irb(main):002> Dir.entries('.').size
|
48
|
+
# => 25
|
49
|
+
# irb(main):003* Dir.entries('.').select do |entry|
|
50
|
+
# irb(main):004* entry.start_with?('R')
|
51
|
+
# irb(main):005> end
|
52
|
+
# => ["README.md", "Rakefile"]
|
261
53
|
#
|
262
|
-
#
|
54
|
+
# The typed input may also include
|
55
|
+
# {\IRB-specific commands}[rdoc-ref:IRB@IRB-Specific+Commands].
|
56
|
+
#
|
57
|
+
# As seen above, you can start \IRB by using the shell command +irb+.
|
58
|
+
#
|
59
|
+
# You can stop an \IRB session by typing command +exit+:
|
60
|
+
#
|
61
|
+
# irb(main):006> exit
|
62
|
+
# $
|
63
|
+
#
|
64
|
+
# At that point, \IRB calls any hooks found in array <tt>IRB.conf[:AT_EXIT]</tt>,
|
65
|
+
# then exits.
|
66
|
+
#
|
67
|
+
# == Startup
|
68
|
+
#
|
69
|
+
# At startup, \IRB:
|
70
|
+
#
|
71
|
+
# 1. Interprets (as Ruby code) the content of the
|
72
|
+
# {configuration file}[rdoc-ref:IRB@Configuration+File] (if given).
|
73
|
+
# 1. Constructs the initial session context
|
74
|
+
# from {hash IRB.conf}[rdoc-ref:IRB@Hash+IRB.conf] and from default values;
|
75
|
+
# the hash content may have been affected
|
76
|
+
# by {command-line options}[rdoc-ref:IB@Command-Line+Options],
|
77
|
+
# and by direct assignments in the configuration file.
|
78
|
+
# 1. Assigns the context to variable +conf+.
|
79
|
+
# 1. Assigns command-line arguments to variable <tt>ARGV</tt>.
|
80
|
+
# 1. Prints the {prompt}[rdoc-ref:IRB@Prompt+and+Return+Formats].
|
81
|
+
# 1. Puts the content of the
|
82
|
+
# {initialization script}[rdoc-ref:IRB@Initialization+Script]
|
83
|
+
# onto the \IRB shell, just as if it were user-typed commands.
|
84
|
+
#
|
85
|
+
# === The Command Line
|
86
|
+
#
|
87
|
+
# On the command line, all options precede all arguments;
|
88
|
+
# the first item that is not recognized as an option is treated as an argument,
|
89
|
+
# as are all items that follow.
|
90
|
+
#
|
91
|
+
# ==== Command-Line Options
|
92
|
+
#
|
93
|
+
# Many command-line options affect entries in hash <tt>IRB.conf</tt>,
|
94
|
+
# which in turn affect the initial configuration of the \IRB session.
|
95
|
+
#
|
96
|
+
# Details of the options are described in the relevant subsections below.
|
97
|
+
#
|
98
|
+
# A cursory list of the \IRB command-line options
|
99
|
+
# may be seen in the {help message}[https://raw.githubusercontent.com/ruby/irb/master/lib/irb/lc/help-message],
|
100
|
+
# which is also displayed if you use command-line option <tt>--help</tt>.
|
101
|
+
#
|
102
|
+
# If you are interested in a specific option, consult the
|
103
|
+
# {index}[rdoc-ref:doc/irb/indexes.md@Index+of+Command-Line+Options].
|
104
|
+
#
|
105
|
+
# ==== Command-Line Arguments
|
106
|
+
#
|
107
|
+
# Command-line arguments are passed to \IRB in array +ARGV+:
|
108
|
+
#
|
109
|
+
# $ irb --noscript Foo Bar Baz
|
110
|
+
# irb(main):001> ARGV
|
111
|
+
# => ["Foo", "Bar", "Baz"]
|
112
|
+
# irb(main):002> exit
|
113
|
+
# $
|
114
|
+
#
|
115
|
+
# Command-line option <tt>--</tt> causes everything that follows
|
116
|
+
# to be treated as arguments, even those that look like options:
|
117
|
+
#
|
118
|
+
# $ irb --noscript -- --noscript -- Foo Bar Baz
|
119
|
+
# irb(main):001> ARGV
|
120
|
+
# => ["--noscript", "--", "Foo", "Bar", "Baz"]
|
121
|
+
# irb(main):002> exit
|
122
|
+
# $
|
123
|
+
#
|
124
|
+
# === Configuration File
|
125
|
+
#
|
126
|
+
# You can initialize \IRB via a <i>configuration file</i>.
|
127
|
+
#
|
128
|
+
# If command-line option <tt>-f</tt> is given,
|
129
|
+
# no configuration file is looked for.
|
130
|
+
#
|
131
|
+
# Otherwise, \IRB reads and interprets a configuration file
|
132
|
+
# if one is available.
|
133
|
+
#
|
134
|
+
# The configuration file can contain any Ruby code, and can usefully include
|
135
|
+
# user code that:
|
136
|
+
#
|
137
|
+
# - Can then be debugged in \IRB.
|
138
|
+
# - Configures \IRB itself.
|
139
|
+
# - Requires or loads files.
|
140
|
+
#
|
141
|
+
# The path to the configuration file is the first found among:
|
142
|
+
#
|
143
|
+
# - The value of variable <tt>$IRBRC</tt>, if defined.
|
144
|
+
# - The value of variable <tt>$XDG_CONFIG_HOME/irb/irbrc</tt>, if defined.
|
145
|
+
# - File <tt>$HOME/.irbrc</tt>, if it exists.
|
146
|
+
# - File <tt>$HOME/.config/irb/irbrc</tt>, if it exists.
|
147
|
+
# - File +.config/irb/irbrc+ in the current directory, if it exists.
|
148
|
+
# - File +.irbrc+ in the current directory, if it exists.
|
149
|
+
# - File +irb.rc+ in the current directory, if it exists.
|
150
|
+
# - File +_irbrc+ in the current directory, if it exists.
|
151
|
+
# - File <tt>$irbrc</tt> in the current directory, if it exists.
|
152
|
+
#
|
153
|
+
# If the search fails, there is no configuration file.
|
154
|
+
#
|
155
|
+
# If the search succeeds, the configuration file is read as Ruby code,
|
156
|
+
# and so can contain any Ruby programming you like.
|
157
|
+
#
|
158
|
+
# \Method <tt>conf.rc?</tt> returns +true+ if a configuration file was read,
|
159
|
+
# +false+ otherwise.
|
160
|
+
# \Hash entry <tt>IRB.conf[:RC]</tt> also contains that value.
|
161
|
+
#
|
162
|
+
# === \Hash <tt>IRB.conf</tt>
|
163
|
+
#
|
164
|
+
# The initial entries in hash <tt>IRB.conf</tt> are determined by:
|
165
|
+
#
|
166
|
+
# - Default values.
|
167
|
+
# - Command-line options, which may override defaults.
|
168
|
+
# - Direct assignments in the configuration file.
|
169
|
+
#
|
170
|
+
# You can see the hash by typing <tt>IRB.conf</tt>.
|
171
|
+
#
|
172
|
+
# Details of the entries' meanings are described in the relevant subsections below.
|
173
|
+
#
|
174
|
+
# If you are interested in a specific entry, consult the
|
175
|
+
# {index}[rdoc-ref:doc/irb/indexes.md@Index+of+IRB.conf+Entries].
|
176
|
+
#
|
177
|
+
# === Notes on Initialization Precedence
|
178
|
+
#
|
179
|
+
# - Any conflict between an entry in hash <tt>IRB.conf</tt> and a command-line option
|
180
|
+
# is resolved in favor of the hash entry.
|
181
|
+
# - \Hash <tt>IRB.conf</tt> affects the context only once,
|
182
|
+
# when the configuration file is interpreted;
|
183
|
+
# any subsequent changes to it do not affect the context
|
184
|
+
# and are therefore essentially meaningless.
|
185
|
+
#
|
186
|
+
# === Initialization Script
|
187
|
+
#
|
188
|
+
# By default, the first command-line argument (after any options)
|
189
|
+
# is the path to a Ruby initialization script.
|
190
|
+
#
|
191
|
+
# \IRB reads the initialization script and puts its content onto the \IRB shell,
|
192
|
+
# just as if it were user-typed commands.
|
193
|
+
#
|
194
|
+
# Command-line option <tt>--noscript</tt> causes the first command-line argument
|
195
|
+
# to be treated as an ordinary argument (instead of an initialization script);
|
196
|
+
# <tt>--script</tt> is the default.
|
197
|
+
#
|
198
|
+
# == Input
|
199
|
+
#
|
200
|
+
# This section describes the features that allow you to change
|
201
|
+
# the way \IRB input works;
|
202
|
+
# see also {Input and Output}[rdoc-ref:IRB@Input+and+Output].
|
203
|
+
#
|
204
|
+
# === Input Command History
|
205
|
+
#
|
206
|
+
# By default, \IRB stores a history of up to 1000 input commands
|
207
|
+
# in file <tt>~/.irb_history</tt>
|
208
|
+
# (or, if a {configuration file}[rdoc-ref:IRB@Configuration+File]
|
209
|
+
# is found, in file +.irb_history+
|
210
|
+
# inin the same directory as that file).
|
211
|
+
#
|
212
|
+
# A new \IRB session creates the history file if it does not exist,
|
213
|
+
# and appends to the file if it does exist.
|
214
|
+
#
|
215
|
+
# You can change the filepath by adding to your configuration file:
|
216
|
+
# <tt>IRB.conf[:HISTORY_FILE] = _filepath_</tt>,
|
217
|
+
# where _filepath_ is a string filepath.
|
218
|
+
#
|
219
|
+
# During the session, method <tt>conf.history_file</tt> returns the filepath,
|
220
|
+
# and method <tt>conf.history_file = <i>new_filepath</i></tt>
|
221
|
+
# copies the history to the file at <i>new_filepath</i>,
|
222
|
+
# which becomes the history file for the session.
|
223
|
+
#
|
224
|
+
# You can change the number of commands saved by adding to your configuration file:
|
225
|
+
# <tt>IRB.conf[:SAVE_HISTORY] = _n_</tt>,
|
226
|
+
# where _n_ is one of:
|
227
|
+
#
|
228
|
+
# - Positive integer: the number of commands to be saved,
|
229
|
+
# - Zero: all commands are to be saved.
|
230
|
+
# - +nil+: no commands are to be saved,.
|
231
|
+
#
|
232
|
+
# During the session, you can use
|
233
|
+
# methods <tt>conf.save_history</tt> or <tt>conf.save_history=</tt>
|
234
|
+
# to retrieve or change the count.
|
235
|
+
#
|
236
|
+
# === Command Aliases
|
237
|
+
#
|
238
|
+
# By default, \IRB defines several command aliases:
|
239
|
+
#
|
240
|
+
# irb(main):001> conf.command_aliases
|
241
|
+
# => {:"$"=>:show_source, :"@"=>:whereami}
|
242
|
+
#
|
243
|
+
# You can change the initial aliases in the configuration file with:
|
244
|
+
#
|
245
|
+
# IRB.conf[:COMMAND_ALIASES] = {foo: :show_source, bar: :whereami}
|
246
|
+
#
|
247
|
+
# You can replace the current aliases at any time
|
248
|
+
# with configuration method <tt>conf.command_aliases=</tt>;
|
249
|
+
# Because <tt>conf.command_aliases</tt> is a hash,
|
250
|
+
# you can modify it.
|
251
|
+
#
|
252
|
+
# === End-of-File
|
253
|
+
#
|
254
|
+
# By default, <tt>IRB.conf[:IGNORE_EOF]</tt> is +false+,
|
255
|
+
# which means that typing the end-of-file character <tt>Ctrl-D</tt>
|
256
|
+
# causes the session to exit.
|
257
|
+
#
|
258
|
+
# You can reverse that behavior by adding <tt>IRB.conf[:IGNORE_EOF] = true</tt>
|
259
|
+
# to the configuration file.
|
260
|
+
#
|
261
|
+
# During the session, method <tt>conf.ignore_eof?</tt> returns the setting,
|
262
|
+
# and method <tt>conf.ignore_eof = _boolean_</tt> sets it.
|
263
|
+
#
|
264
|
+
# === SIGINT
|
265
|
+
#
|
266
|
+
# By default, <tt>IRB.conf[:IGNORE_SIGINT]</tt> is +true+,
|
267
|
+
# which means that typing the interrupt character <tt>Ctrl-C</tt>
|
268
|
+
# causes the session to exit.
|
269
|
+
#
|
270
|
+
# You can reverse that behavior by adding <tt>IRB.conf[:IGNORE_SIGING] = false</tt>
|
271
|
+
# to the configuration file.
|
272
|
+
#
|
273
|
+
# During the session, method <tt>conf.ignore_siging?</tt> returns the setting,
|
274
|
+
# and method <tt>conf.ignore_sigint = _boolean_</tt> sets it.
|
275
|
+
#
|
276
|
+
# === Automatic Completion
|
277
|
+
#
|
278
|
+
# By default, \IRB enables
|
279
|
+
# {automatic completion}[https://en.wikipedia.org/wiki/Autocomplete#In_command-line_interpreters]:
|
280
|
+
#
|
281
|
+
# You can disable it by either of these:
|
282
|
+
#
|
283
|
+
# - Adding <tt>IRB.conf[:USE_AUTOCOMPLETE] = false</tt> to the configuration file.
|
284
|
+
# - Giving command-line option <tt>--noautocomplete</tt>
|
285
|
+
# (<tt>--autocomplete</tt> is the default).
|
286
|
+
#
|
287
|
+
# \Method <tt>conf.use_autocomplete?</tt> returns +true+
|
288
|
+
# if automatic completion is enabled, +false+ otherwise.
|
289
|
+
#
|
290
|
+
# The setting may not be changed during the session.
|
291
|
+
#
|
292
|
+
# === Automatic Indentation
|
293
|
+
#
|
294
|
+
# By default, \IRB automatically indents lines of code to show structure
|
295
|
+
# (e.g., it indent the contents of a block).
|
296
|
+
#
|
297
|
+
# The current setting is returned
|
298
|
+
# by the configuration method <tt>conf.auto_indent_mode</tt>.
|
299
|
+
#
|
300
|
+
# The default initial setting is +true+:
|
301
|
+
#
|
302
|
+
# irb(main):001> conf.auto_indent_mode
|
303
|
+
# => true
|
304
|
+
# irb(main):002* Dir.entries('.').select do |entry|
|
305
|
+
# irb(main):003* entry.start_with?('R')
|
306
|
+
# irb(main):004> end
|
307
|
+
# => ["README.md", "Rakefile"]
|
308
|
+
#
|
309
|
+
# You can change the initial setting in the
|
310
|
+
# configuration file with:
|
311
|
+
#
|
312
|
+
# IRB.conf[:AUTO_INDENT] = false
|
313
|
+
#
|
314
|
+
# Note that the _current_ setting <i>may not</i> be changed in the \IRB session.
|
315
|
+
#
|
316
|
+
# === Input \Method
|
317
|
+
#
|
318
|
+
# The \IRB input method determines how command input is to be read;
|
319
|
+
# by default, the input method for a session is IRB::RelineInputMethod.
|
320
|
+
#
|
321
|
+
# You can set the input method by:
|
322
|
+
#
|
323
|
+
# - Adding to the configuration file:
|
324
|
+
#
|
325
|
+
# - <tt>IRB.conf[:USE_SINGLELINE] = true</tt>
|
326
|
+
# or <tt>IRB.conf[:USE_MULTILINE]= false</tt>
|
327
|
+
# sets the input method to IRB::ReadlineInputMethod.
|
328
|
+
# - <tt>IRB.conf[:USE_SINGLELINE] = false</tt>
|
329
|
+
# or <tt>IRB.conf[:USE_MULTILINE] = true</tt>
|
330
|
+
# sets the input method to IRB::RelineInputMethod.
|
331
|
+
#
|
332
|
+
# - Giving command-line options:
|
333
|
+
#
|
334
|
+
# - <tt>--singleline</tt>
|
335
|
+
# or <tt>--nomultiline</tt>
|
336
|
+
# sets the input method to IRB::ReadlineInputMethod.
|
337
|
+
# - <tt>--nosingleline</tt>
|
338
|
+
# or <tt>--multiline/tt>
|
339
|
+
# sets the input method to IRB::RelineInputMethod.
|
340
|
+
#
|
341
|
+
# \Method <tt>conf.use_multiline?</tt>
|
342
|
+
# and its synonym <tt>conf.use_reline</tt> return:
|
343
|
+
#
|
344
|
+
# - +true+ if option <tt>--multiline</tt> was given.
|
345
|
+
# - +false+ if option <tt>--nomultiline</tt> was given.
|
346
|
+
# - +nil+ if neither was given.
|
347
|
+
#
|
348
|
+
# \Method <tt>conf.use_singleline?</tt>
|
349
|
+
# and its synonym <tt>conf.use_readline</tt> return:
|
350
|
+
#
|
351
|
+
# - +true+ if option <tt>--singleline</tt> was given.
|
352
|
+
# - +false+ if option <tt>--nosingleline</tt> was given.
|
353
|
+
# - +nil+ if neither was given.
|
354
|
+
#
|
355
|
+
# == Output
|
356
|
+
#
|
357
|
+
# This section describes the features that allow you to change
|
358
|
+
# the way \IRB output works;
|
359
|
+
# see also {Input and Output}[rdoc-ref:IRB@Input+and+Output].
|
360
|
+
#
|
361
|
+
# === Return-Value Printing (Echoing)
|
362
|
+
#
|
363
|
+
# By default, \IRB prints (echoes) the values returned by all input commands.
|
364
|
+
#
|
365
|
+
# You can change the initial behavior and suppress all echoing by:
|
366
|
+
#
|
367
|
+
# - Adding to the configuration file: <tt>IRB.conf[:ECHO] = false</tt>.
|
368
|
+
# (The default value for this entry is +niL+, which means the same as +true+.)
|
369
|
+
# - Giving command-line option <tt>--noecho</tt>.
|
370
|
+
# (The default is <tt>--echo</tt>.)
|
371
|
+
#
|
372
|
+
# During the session, you can change the current setting
|
373
|
+
# with configuration method <tt>conf.echo=</tt> (set to +true+ or +false+).
|
374
|
+
#
|
375
|
+
# As stated above, by default \IRB prints the values returned by all input commands;
|
376
|
+
# but \IRB offers special treatment for values returned by assignment statements,
|
377
|
+
# which may be:
|
378
|
+
#
|
379
|
+
# - Printed with truncation (to fit on a single line of output),
|
380
|
+
# which is the default;
|
381
|
+
# an ellipsis (<tt>...</tt> is suffixed, to indicate the truncation):
|
382
|
+
#
|
383
|
+
# irb(main):001> x = 'abc' * 100
|
384
|
+
# => "abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc...
|
385
|
+
#
|
386
|
+
# - Printed in full (regardless of the length).
|
387
|
+
# - Suppressed (not printed at all)
|
388
|
+
#
|
389
|
+
# You can change the initial behavior by:
|
390
|
+
#
|
391
|
+
# - Adding to the configuration file: <tt>IRB.conf[:ECHO_ON_ASSIGNMENT] = false</tt>.
|
392
|
+
# (The default value for this entry is +niL+, which means the same as +:truncate+.)
|
393
|
+
# - Giving command-line option <tt>--noecho-on-assignment</tt>
|
394
|
+
# or <tt>--echo-on-assignment</tt>.
|
395
|
+
# (The default is <tt>--truncate-echo-on-assigment</tt>.)
|
396
|
+
#
|
397
|
+
# During the session, you can change the current setting
|
398
|
+
# with configuration method <tt>conf.echo_on_assignment=</tt>
|
399
|
+
# (set to +true+, +false+, or +:truncate+).
|
400
|
+
#
|
401
|
+
# By default, \IRB formats returned values by calling method +inspect+.
|
402
|
+
#
|
403
|
+
# You can change the initial behavior by:
|
404
|
+
#
|
405
|
+
# - Adding to the configuration file: <tt>IRB.conf[:INSPECT_MODE] = false</tt>.
|
406
|
+
# (The default value for this entry is +true+.)
|
407
|
+
# - Giving command-line option <tt>--noinspect</tt>.
|
408
|
+
# (The default is <tt>--inspect</tt>.)
|
409
|
+
#
|
410
|
+
# During the session, you can change the setting using method <tt>conf.inspect_mode=</tt>.
|
411
|
+
#
|
412
|
+
# === Multiline Output
|
413
|
+
#
|
414
|
+
# By default, \IRB prefixes a newline to a multiline response.
|
415
|
+
#
|
416
|
+
# You can change the initial default value by adding to the configuation file:
|
417
|
+
#
|
418
|
+
# IRB.conf[:NEWLINE_BEFORE_MULTILINE_OUTPUT] = false
|
419
|
+
#
|
420
|
+
# During a session, you can retrieve or set the value using
|
421
|
+
# methods <tt>conf.newline_before_multiline_output?</tt>
|
422
|
+
# and <tt>conf.newline_before_multiline_output=</tt>.
|
423
|
+
#
|
424
|
+
# Examples:
|
425
|
+
#
|
426
|
+
# irb(main):001> conf.inspect_mode = false
|
427
|
+
# => false
|
428
|
+
# irb(main):002> "foo\nbar"
|
429
|
+
# =>
|
430
|
+
# foo
|
431
|
+
# bar
|
432
|
+
# irb(main):003> conf.newline_before_multiline_output = false
|
433
|
+
# => false
|
434
|
+
# irb(main):004> "foo\nbar"
|
435
|
+
# => foo
|
436
|
+
# bar
|
437
|
+
#
|
438
|
+
# === Evaluation History
|
439
|
+
#
|
440
|
+
# By default, \IRB saves no history of evaluations (returned values),
|
441
|
+
# and the related methods <tt>conf.eval_history</tt>, <tt>_</tt>,
|
442
|
+
# and <tt>__</tt> are undefined.
|
443
|
+
#
|
444
|
+
# You can turn on that history, and set the maximum number of evaluations to be stored:
|
445
|
+
#
|
446
|
+
# - In the configuration file: add <tt>IRB.conf[:EVAL_HISTORY] = _n_</tt>.
|
447
|
+
# (Examples below assume that we've added <tt>IRB.conf[:EVAL_HISTORY] = 5</tt>.)
|
448
|
+
# - In the session (at any time): <tt>conf.eval_history = _n_</tt>.
|
449
|
+
#
|
450
|
+
# If +n+ is zero, all evaluation history is stored.
|
451
|
+
#
|
452
|
+
# Doing either of the above:
|
263
453
|
#
|
264
|
-
#
|
454
|
+
# - Sets the maximum size of the evaluation history;
|
455
|
+
# defines method <tt>conf.eval_history</tt>,
|
456
|
+
# which returns the maximum size +n+ of the evaluation history:
|
265
457
|
#
|
266
|
-
#
|
267
|
-
#
|
268
|
-
#
|
458
|
+
# irb(main):001> conf.eval_history = 5
|
459
|
+
# => 5
|
460
|
+
# irb(main):002> conf.eval_history
|
461
|
+
# => 5
|
269
462
|
#
|
270
|
-
#
|
271
|
-
#
|
463
|
+
# - Defines variable <tt>_</tt>, which contains the most recent evaluation,
|
464
|
+
# or +nil+ if none; same as method <tt>conf.last_value</tt>:
|
272
465
|
#
|
273
|
-
#
|
466
|
+
# irb(main):003> _
|
467
|
+
# => 5
|
468
|
+
# irb(main):004> :foo
|
469
|
+
# => :foo
|
470
|
+
# irb(main):005> :bar
|
471
|
+
# => :bar
|
472
|
+
# irb(main):006> _
|
473
|
+
# => :bar
|
474
|
+
# irb(main):007> _
|
475
|
+
# => :bar
|
274
476
|
#
|
275
|
-
#
|
276
|
-
# Loads a given file in the current session and displays the source lines,
|
277
|
-
# see IrbLoader#source_file
|
278
|
-
# +irb_load+::
|
279
|
-
# Loads the given file similarly to Kernel#load, see IrbLoader#irb_load
|
280
|
-
# +irb_require+::
|
281
|
-
# Loads the given file similarly to Kernel#require
|
477
|
+
# - Defines variable <tt>__</tt>:
|
282
478
|
#
|
283
|
-
#
|
479
|
+
# - <tt>__</tt> unadorned: contains all evaluation history:
|
480
|
+
#
|
481
|
+
# irb(main):008> :foo
|
482
|
+
# => :foo
|
483
|
+
# irb(main):009> :bar
|
484
|
+
# => :bar
|
485
|
+
# irb(main):010> :baz
|
486
|
+
# => :baz
|
487
|
+
# irb(main):011> :bat
|
488
|
+
# => :bat
|
489
|
+
# irb(main):012> :bam
|
490
|
+
# => :bam
|
491
|
+
# irb(main):013> __
|
492
|
+
# =>
|
493
|
+
# 9 :bar
|
494
|
+
# 10 :baz
|
495
|
+
# 11 :bat
|
496
|
+
# 12 :bam
|
497
|
+
# irb(main):014> __
|
498
|
+
# =>
|
499
|
+
# 10 :baz
|
500
|
+
# 11 :bat
|
501
|
+
# 12 :bam
|
502
|
+
# 13 ...self-history...
|
503
|
+
#
|
504
|
+
# Note that when the evaluation is multiline, it is displayed differently.
|
505
|
+
#
|
506
|
+
# - <tt>__[</tt>_m_<tt>]</tt>:
|
507
|
+
#
|
508
|
+
# - Positive _m_: contains the evaluation for the given line number,
|
509
|
+
# or +nil+ if that line number is not in the evaluation history:
|
510
|
+
#
|
511
|
+
# irb(main):015> __[12]
|
512
|
+
# => :bam
|
513
|
+
# irb(main):016> __[1]
|
514
|
+
# => nil
|
515
|
+
#
|
516
|
+
# - Negative _m_: contains the +mth+-from-end evaluation,
|
517
|
+
# or +nil+ if that evaluation is not in the evaluation history:
|
518
|
+
#
|
519
|
+
# irb(main):017> __[-3]
|
520
|
+
# => :bam
|
521
|
+
# irb(main):018> __[-13]
|
522
|
+
# => nil
|
523
|
+
#
|
524
|
+
# - Zero _m_: contains +nil+:
|
525
|
+
#
|
526
|
+
# irb(main):019> __[0]
|
527
|
+
# => nil
|
528
|
+
#
|
529
|
+
# === Prompt and Return Formats
|
530
|
+
#
|
531
|
+
# By default, \IRB uses the prompt and return value formats
|
532
|
+
# defined in its +:DEFAULT+ prompt mode.
|
533
|
+
#
|
534
|
+
# ==== The Default Prompt and Return Format
|
535
|
+
#
|
536
|
+
# The default prompt and return values look like this:
|
537
|
+
#
|
538
|
+
# irb(main):001> 1 + 1
|
539
|
+
# => 2
|
540
|
+
# irb(main):002> 2 + 2
|
541
|
+
# => 4
|
542
|
+
#
|
543
|
+
# The prompt includes:
|
544
|
+
#
|
545
|
+
# - The name of the running program (<tt>irb</tt>);
|
546
|
+
# see {IRB Name}[rdoc-ref:IRB@IRB+Name].
|
547
|
+
# - The name of the current session (<tt>main</tt>);
|
548
|
+
# See {IRB Sessions}[rdoc-ref:IRB@IRB+Sessions].
|
549
|
+
# - A 3-digit line number (1-based).
|
550
|
+
#
|
551
|
+
# The default prompt actually defines three formats:
|
552
|
+
#
|
553
|
+
# - One for most situations (as above):
|
554
|
+
#
|
555
|
+
# irb(main):003> Dir
|
556
|
+
# => Dir
|
557
|
+
#
|
558
|
+
# - One for when the typed command is a statement continuation (adds trailing asterisk):
|
559
|
+
#
|
560
|
+
# irb(main):004* Dir.
|
561
|
+
#
|
562
|
+
# - One for when the typed command is a string continuation (adds trailing single-quote):
|
563
|
+
#
|
564
|
+
# irb(main):005' Dir.entries('.
|
565
|
+
#
|
566
|
+
# You can see the prompt change as you type the characters in the following:
|
567
|
+
#
|
568
|
+
# irb(main):001* Dir.entries('.').select do |entry|
|
569
|
+
# irb(main):002* entry.start_with?('R')
|
570
|
+
# irb(main):003> end
|
571
|
+
# => ["README.md", "Rakefile"]
|
572
|
+
#
|
573
|
+
# ==== Pre-Defined Prompts
|
574
|
+
#
|
575
|
+
# \IRB has several pre-defined prompts, stored in hash <tt>IRB.conf[:PROMPT]</tt>:
|
576
|
+
#
|
577
|
+
# irb(main):001> IRB.conf[:PROMPT].keys
|
578
|
+
# => [:NULL, :DEFAULT, :CLASSIC, :SIMPLE, :INF_RUBY, :XMP]
|
579
|
+
#
|
580
|
+
# To see the full data for these, type <tt>IRB.conf[:PROMPT]</tt>.
|
581
|
+
#
|
582
|
+
# Most of these prompt definitions include specifiers that represent
|
583
|
+
# values like the \IRB name, session name, and line number;
|
584
|
+
# see {Prompt Specifiers}[rdoc-ref:IRB@Prompt+Specifiers].
|
585
|
+
#
|
586
|
+
# You can change the initial prompt and return format by:
|
587
|
+
#
|
588
|
+
# - Adding to the configuration file: <tt>IRB.conf[:PROMPT] = _mode_</tt>
|
589
|
+
# where _mode_ is the symbol name of a prompt mode.
|
590
|
+
# - Giving a command-line option:
|
591
|
+
#
|
592
|
+
# - <tt>--prompt _mode_</tt>: sets the prompt mode to _mode_.
|
593
|
+
# where _mode_ is the symbol name of a prompt mode.
|
594
|
+
# - <tt>--simple-prompt</tt> or <tt>--sample-book-mode</tt>:
|
595
|
+
# sets the prompt mode to +:SIMPLE+.
|
596
|
+
# - <tt>--inf-ruby-mode</tt>: sets the prompt mode to +:INF_RUBY+
|
597
|
+
# and suppresses both <tt>--multiline</tt> and <tt>--singleline</tt>.
|
598
|
+
# - <tt>--noprompt</tt>: suppresses prompting; does not affect echoing.
|
599
|
+
#
|
600
|
+
# You can retrieve or set the current prompt mode with methods
|
601
|
+
#
|
602
|
+
# <tt>conf.prompt_mode</tt> and <tt>conf.prompt_mode=</tt>.
|
603
|
+
#
|
604
|
+
# If you're interested in prompts and return formats other than the defaults,
|
605
|
+
# you might experiment by trying some of the others.
|
606
|
+
#
|
607
|
+
# ==== Custom Prompts
|
608
|
+
#
|
609
|
+
# You can also define custom prompts and return formats,
|
610
|
+
# which may be done either in an \IRB session or in the configuration file.
|
611
|
+
#
|
612
|
+
# A prompt in \IRB actually defines three prompts, as seen above.
|
613
|
+
# For simple custom data, we'll make all three the same:
|
614
|
+
#
|
615
|
+
# irb(main):001* IRB.conf[:PROMPT][:MY_PROMPT] = {
|
616
|
+
# irb(main):002* PROMPT_I: ': ',
|
617
|
+
# irb(main):003* PROMPT_C: ': ',
|
618
|
+
# irb(main):004* PROMPT_S: ': ',
|
619
|
+
# irb(main):005* RETURN: '=> '
|
620
|
+
# irb(main):006> }
|
621
|
+
# => {:PROMPT_I=>": ", :PROMPT_C=>": ", :PROMPT_S=>": ", :RETURN=>"=> "}
|
622
|
+
#
|
623
|
+
# If you define the custom prompt in the configuration file,
|
624
|
+
# you can also make it the current prompt by adding:
|
625
|
+
#
|
626
|
+
# IRB.conf[:PROMPT_MODE] = :MY_PROMPT
|
627
|
+
#
|
628
|
+
# Regardless of where it's defined, you can make it the current prompt in a session:
|
629
|
+
#
|
630
|
+
# conf.prompt_mode = :MY_PROMPT
|
631
|
+
#
|
632
|
+
# You can view or modify the current prompt data with various configuration methods:
|
633
|
+
#
|
634
|
+
# - <tt>conf.prompt_mode</tt>, <tt>conf.prompt_mode=</tt>.
|
635
|
+
# - <tt>conf.prompt_c</tt>, <tt>conf.c=</tt>.
|
636
|
+
# - <tt>conf.prompt_i</tt>, <tt>conf.i=</tt>.
|
637
|
+
# - <tt>conf.prompt_s</tt>, <tt>conf.s=</tt>.
|
638
|
+
# - <tt>conf.return_format</tt>, <tt>return_format=</tt>.
|
639
|
+
#
|
640
|
+
# ==== Prompt Specifiers
|
641
|
+
#
|
642
|
+
# A prompt's definition can include specifiers for which certain values are substituted:
|
643
|
+
#
|
644
|
+
# - <tt>%N</tt>: the name of the running program.
|
645
|
+
# - <tt>%m</tt>: the value of <tt>self.to_s</tt>.
|
646
|
+
# - <tt>%M</tt>: the value of <tt>self.inspect</tt>.
|
647
|
+
# - <tt>%l</tt>: an indication of the type of string;
|
648
|
+
# one of <tt>"</tt>, <tt>'</tt>, <tt>/</tt>, <tt>]</tt>.
|
649
|
+
# - <tt><i>NN</i>i</tt>: Indentation level.
|
650
|
+
# - <tt><i>NN</i>n</tt>: Line number.
|
651
|
+
# - <tt>%%</tt>: Literal <tt>%</tt>.
|
652
|
+
#
|
653
|
+
# === Verbosity
|
654
|
+
#
|
655
|
+
# By default, \IRB verbosity is disabled, which means that output is smaller
|
656
|
+
# rather than larger.
|
657
|
+
#
|
658
|
+
# You can enable verbosity by:
|
659
|
+
#
|
660
|
+
# - Adding to the configuration file: <tt>IRB.conf[:VERBOSE] = true</tt>
|
661
|
+
# (the default is +nil+).
|
662
|
+
# - Giving command-line options <tt>--verbose</tt>
|
663
|
+
# (the default is <tt>--noverbose</tt>).
|
664
|
+
#
|
665
|
+
# During a session, you can retrieve or set verbosity with methods
|
666
|
+
# <tt>conf.verbose</tt> and <tt>conf.verbose=</tt>.
|
667
|
+
#
|
668
|
+
# === Help
|
669
|
+
#
|
670
|
+
# Command-line option <tt>--version</tt> causes \IRB to print its help text
|
671
|
+
# and exit.
|
672
|
+
#
|
673
|
+
# === Version
|
674
|
+
#
|
675
|
+
# Command-line option <tt>--version</tt> causes \IRB to print its version text
|
676
|
+
# and exit.
|
677
|
+
#
|
678
|
+
# == Input and Output
|
679
|
+
#
|
680
|
+
# === \Color Highlighting
|
681
|
+
#
|
682
|
+
# By default, \IRB color highlighting is enabled, and is used for both:
|
683
|
+
#
|
684
|
+
# - Input: As you type, \IRB reads the typed characters and highlights
|
685
|
+
# elements that it recognizes;
|
686
|
+
# it also highlights errors such as mismatched parentheses.
|
687
|
+
# - Output: \IRB highlights syntactical elements.
|
688
|
+
#
|
689
|
+
# You can disable color highlighting by:
|
690
|
+
#
|
691
|
+
# - Adding to the configuration file: <tt>IRB.conf[:USE_COLORIZE] = false</tt>
|
692
|
+
# (the default value is +true+).
|
693
|
+
# - Giving command-line option <tt>--nocolorize</tt>
|
694
|
+
#
|
695
|
+
# == Debugging
|
696
|
+
#
|
697
|
+
# Command-line option <tt>-d</tt> sets variables <tt>$VERBOSE</tt>
|
698
|
+
# and <tt>$DEBUG</tt> to +true+;
|
699
|
+
# these have no effect on \IRB output.
|
700
|
+
#
|
701
|
+
# === Warnings
|
702
|
+
#
|
703
|
+
# Command-line option <tt>-w</tt> suppresses warnings.
|
704
|
+
#
|
705
|
+
# Command-line option <tt>-W[_level_]<tt>
|
706
|
+
# sets warning level; 0=silence, 1=medium, 2=verbose.
|
707
|
+
#
|
708
|
+
# == Other Features
|
709
|
+
#
|
710
|
+
# === Load Modules
|
711
|
+
#
|
712
|
+
# You can specify the names of modules that are to be required at startup.
|
713
|
+
#
|
714
|
+
# \Array <tt>conf.load_modules</tt> determines the modules (if any)
|
715
|
+
# that are to be required during session startup.
|
716
|
+
# The array is used only during session startup,
|
717
|
+
# so the initial value is the only one that counts.
|
718
|
+
#
|
719
|
+
# The default initial value is <tt>[]</tt> (load no modules):
|
720
|
+
#
|
721
|
+
# irb(main):001> conf.load_modules
|
722
|
+
# => []
|
723
|
+
#
|
724
|
+
# You can set the default initial value via:
|
725
|
+
#
|
726
|
+
# - Command-line option <tt>-r</tt>
|
727
|
+
#
|
728
|
+
# $ irb -r csv -r json
|
729
|
+
# irb(main):001> conf.load_modules
|
730
|
+
# => ["csv", "json"]
|
731
|
+
#
|
732
|
+
# - \Hash entry <tt>IRB.conf[:LOAD_MODULES] = _array_</tt>:
|
733
|
+
#
|
734
|
+
# IRB.conf[:LOAD_MODULES] = %w[csv, json]
|
735
|
+
#
|
736
|
+
# Note that the configuration file entry overrides the command-line options.
|
737
|
+
#
|
738
|
+
# === RI Documentation Directories
|
739
|
+
#
|
740
|
+
# You can specify the paths to RI documentation directories
|
741
|
+
# that are to be loaded (in addition to the default directories) at startup;
|
742
|
+
# see details about RI by typing <tt>ri --help</tt>.
|
743
|
+
#
|
744
|
+
# \Array <tt>conf.extra_doc_dirs</tt> determines the directories (if any)
|
745
|
+
# that are to be loaded during session startup.
|
746
|
+
# The array is used only during session startup,
|
747
|
+
# so the initial value is the only one that counts.
|
748
|
+
#
|
749
|
+
# The default initial value is <tt>[]</tt> (load no extra documentation):
|
750
|
+
#
|
751
|
+
# irb(main):001> conf.extra_doc_dirs
|
752
|
+
# => []
|
753
|
+
#
|
754
|
+
# You can set the default initial value via:
|
755
|
+
#
|
756
|
+
# - Command-line option <tt>--extra_doc_dir</tt>
|
757
|
+
#
|
758
|
+
# $ irb --extra-doc-dir your_doc_dir --extra-doc-dir my_doc_dir
|
759
|
+
# irb(main):001> conf.extra_doc_dirs
|
760
|
+
# => ["your_doc_dir", "my_doc_dir"]
|
761
|
+
#
|
762
|
+
# - \Hash entry <tt>IRB.conf[:EXTRA_DOC_DIRS] = _array_</tt>:
|
763
|
+
#
|
764
|
+
# IRB.conf[:EXTRA_DOC_DIRS] = %w[your_doc_dir my_doc_dir]
|
765
|
+
#
|
766
|
+
# Note that the configuration file entry overrides the command-line options.
|
767
|
+
#
|
768
|
+
# === \IRB Name
|
769
|
+
#
|
770
|
+
# You can specify a name for \IRB.
|
771
|
+
#
|
772
|
+
# The default initial value is <tt>'irb'</tt>:
|
773
|
+
#
|
774
|
+
# irb(main):001> conf.irb_name
|
775
|
+
# => "irb"
|
776
|
+
#
|
777
|
+
# You can set the default initial value
|
778
|
+
# via hash entry <tt>IRB.conf[:IRB_NAME] = _string_</tt>:
|
779
|
+
#
|
780
|
+
# IRB.conf[:IRB_NAME] = 'foo'
|
781
|
+
#
|
782
|
+
# === Application Name
|
783
|
+
#
|
784
|
+
# You can specify an application name for the \IRB session.
|
785
|
+
#
|
786
|
+
# The default initial value is <tt>'irb'</tt>:
|
787
|
+
#
|
788
|
+
# irb(main):001> conf.ap_name
|
789
|
+
# => "irb"
|
790
|
+
#
|
791
|
+
# You can set the default initial value
|
792
|
+
# via hash entry <tt>IRB.conf[:AP_NAME] = _string_</tt>:
|
793
|
+
#
|
794
|
+
# IRB.conf[:AP_NAME] = 'my_ap_name'
|
795
|
+
#
|
796
|
+
# === Configuration Monitor
|
797
|
+
#
|
798
|
+
# You can monitor changes to the configuration by assigning a proc
|
799
|
+
# to <tt>IRB.conf[:IRB_RC]</tt> in the configuration file:
|
800
|
+
#
|
801
|
+
# IRB.conf[:IRB_RC] = proc {|conf| puts conf.class }
|
802
|
+
#
|
803
|
+
# Each time the configuration is changed,
|
804
|
+
# that proc is called with argument +conf+:
|
805
|
+
#
|
806
|
+
# === Encodings
|
807
|
+
#
|
808
|
+
# Command-line option <tt>-E _ex_[:_in_]</tt>
|
809
|
+
# sets initial external (ex) and internal (in) encodings.
|
810
|
+
#
|
811
|
+
# Command-line option <tt>-U</tt> sets both to UTF-8.
|
812
|
+
#
|
813
|
+
# === Commands
|
814
|
+
#
|
815
|
+
# Please use the `show_cmds` command to see the list of available commands.
|
816
|
+
#
|
817
|
+
# === IRB Sessions
|
818
|
+
#
|
819
|
+
# IRB has a special feature, that allows you to manage many sessions at once.
|
820
|
+
#
|
821
|
+
# You can create new sessions with Irb.irb, and get a list of current sessions
|
822
|
+
# with the +jobs+ command in the prompt.
|
823
|
+
#
|
824
|
+
# ==== Configuration
|
284
825
|
#
|
285
826
|
# The command line options, or IRB.conf, specify the default behavior of
|
286
827
|
# Irb.irb.
|
287
828
|
#
|
288
|
-
# On the other hand, each conf in IRB@Command+
|
829
|
+
# On the other hand, each conf in IRB@Command-Line+Options is used to
|
289
830
|
# individually configure IRB.irb.
|
290
831
|
#
|
291
832
|
# If a proc is set for <code>IRB.conf[:IRB_RC]</code>, its will be invoked after execution
|
292
833
|
# of that proc with the context of the current session as its argument. Each
|
293
834
|
# session can be configured using this mechanism.
|
294
835
|
#
|
295
|
-
#
|
836
|
+
# ==== Session variables
|
296
837
|
#
|
297
838
|
# There are a few variables in every Irb session that can come in handy:
|
298
839
|
#
|
@@ -307,66 +848,14 @@ require_relative "irb/pager"
|
|
307
848
|
# If +line_no+ is a negative, the return value +line_no+ many lines before
|
308
849
|
# the most recent return value.
|
309
850
|
#
|
310
|
-
#
|
311
|
-
#
|
312
|
-
#
|
313
|
-
#
|
314
|
-
#
|
315
|
-
#
|
316
|
-
#
|
317
|
-
#
|
318
|
-
#
|
319
|
-
# # change the active session
|
320
|
-
# irb.1(main):002:0> fg 0
|
321
|
-
# # define class Foo in top-level session
|
322
|
-
# irb(main):002:0> class Foo;end
|
323
|
-
# # invoke a new session with the context of Foo
|
324
|
-
# irb(main):003:0> irb Foo
|
325
|
-
# # define Foo#foo
|
326
|
-
# irb.2(Foo):001:0> def foo
|
327
|
-
# irb.2(Foo):002:1> print 1
|
328
|
-
# irb.2(Foo):003:1> end
|
329
|
-
#
|
330
|
-
# # change the active session
|
331
|
-
# irb.2(Foo):004:0> fg 0
|
332
|
-
# # list open sessions
|
333
|
-
# irb(main):004:0> jobs
|
334
|
-
# #0->irb on main (#<Thread:0x400fb7e4> : running)
|
335
|
-
# #1->irb#1 on main (#<Thread:0x40125d64> : stop)
|
336
|
-
# #2->irb#2 on Foo (#<Thread:0x4011d54c> : stop)
|
337
|
-
# # check if Foo#foo is available
|
338
|
-
# irb(main):005:0> Foo.instance_methods #=> [:foo, ...]
|
339
|
-
#
|
340
|
-
# # change the active session
|
341
|
-
# irb(main):006:0> fg 2
|
342
|
-
# # define Foo#bar in the context of Foo
|
343
|
-
# irb.2(Foo):005:0> def bar
|
344
|
-
# irb.2(Foo):006:1> print "bar"
|
345
|
-
# irb.2(Foo):007:1> end
|
346
|
-
# irb.2(Foo):010:0> Foo.instance_methods #=> [:bar, :foo, ...]
|
347
|
-
#
|
348
|
-
# # change the active session
|
349
|
-
# irb.2(Foo):011:0> fg 0
|
350
|
-
# irb(main):007:0> f = Foo.new #=> #<Foo:0x4010af3c>
|
351
|
-
# # invoke a new session with the context of f (instance of Foo)
|
352
|
-
# irb(main):008:0> irb f
|
353
|
-
# # list open sessions
|
354
|
-
# irb.3(<Foo:0x4010af3c>):001:0> jobs
|
355
|
-
# #0->irb on main (#<Thread:0x400fb7e4> : stop)
|
356
|
-
# #1->irb#1 on main (#<Thread:0x40125d64> : stop)
|
357
|
-
# #2->irb#2 on Foo (#<Thread:0x4011d54c> : stop)
|
358
|
-
# #3->irb#3 on #<Foo:0x4010af3c> (#<Thread:0x4010a1e0> : running)
|
359
|
-
# # evaluate f.foo
|
360
|
-
# irb.3(<Foo:0x4010af3c>):002:0> foo #=> 1 => nil
|
361
|
-
# # evaluate f.bar
|
362
|
-
# irb.3(<Foo:0x4010af3c>):003:0> bar #=> bar => nil
|
363
|
-
# # kill jobs 1, 2, and 3
|
364
|
-
# irb.3(<Foo:0x4010af3c>):004:0> kill 1, 2, 3
|
365
|
-
# # list open sessions, should only include main session
|
366
|
-
# irb(main):009:0> jobs
|
367
|
-
# #0->irb on main (#<Thread:0x400fb7e4> : running)
|
368
|
-
# # quit irb
|
369
|
-
# irb(main):010:0> exit
|
851
|
+
# == Restrictions
|
852
|
+
#
|
853
|
+
# Ruby code typed into \IRB behaves the same as Ruby code in a file, except that:
|
854
|
+
#
|
855
|
+
# - Because \IRB evaluates input immediately after it is syntactically complete,
|
856
|
+
# some results may be slightly different.
|
857
|
+
# - Forking may not be well behaved.
|
858
|
+
#
|
370
859
|
module IRB
|
371
860
|
|
372
861
|
# An exception raised by IRB.irb_abort
|
@@ -397,8 +886,8 @@ module IRB
|
|
397
886
|
end
|
398
887
|
|
399
888
|
# Quits irb
|
400
|
-
def IRB.irb_exit(
|
401
|
-
throw :IRB_EXIT
|
889
|
+
def IRB.irb_exit(*)
|
890
|
+
throw :IRB_EXIT
|
402
891
|
end
|
403
892
|
|
404
893
|
# Aborts then interrupts irb.
|
@@ -1023,8 +1512,7 @@ class Binding
|
|
1023
1512
|
# irb(#<Potato:0x00007feea1916670>):005:0> exit
|
1024
1513
|
# Cooked potato: true
|
1025
1514
|
#
|
1026
|
-
#
|
1027
|
-
# See IRB@Usage for more information.
|
1515
|
+
# See IRB for more information.
|
1028
1516
|
def irb(show_code: true)
|
1029
1517
|
# Setup IRB with the current file's path and no command line arguments
|
1030
1518
|
IRB.setup(source_location[0], argv: [])
|