mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
commit typo: remove file from r38358
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38360 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
8983315238
commit
536ecb3477
1 changed files with 0 additions and 391 deletions
391
doc/irb/irb.rd
391
doc/irb/irb.rd
|
@ -1,391 +0,0 @@
|
|||
irb -- interactive ruby
|
||||
$Release Version: 0.9 $
|
||||
$Revision$
|
||||
by Keiju ISHITSUKA(keiju@ishitsuka.com)
|
||||
by gotoken-san who is original translater from japanese version
|
||||
|
||||
=begin
|
||||
= What is irb?
|
||||
|
||||
irb stands for `interactive ruby'. irb is a tool to execute interactively
|
||||
ruby expressions read from stdin.
|
||||
|
||||
= Invoking
|
||||
|
||||
% irb
|
||||
|
||||
= Usage
|
||||
|
||||
Use of irb is easy if you know ruby. Executing irb, prompts are
|
||||
displayed as follows. Then, enter expression of ruby. A input is
|
||||
executed when it is syntacticaly completed.
|
||||
|
||||
dim% irb
|
||||
irb(main):001:0> 1+2
|
||||
3
|
||||
irb(main):002:0> class Foo
|
||||
irb(main):003:1> def foo
|
||||
irb(main):004:2> print 1
|
||||
irb(main):005:2> end
|
||||
irb(main):006:1> end
|
||||
nil
|
||||
irb(main):007:0>
|
||||
|
||||
And, Readline extesion module can be used with irb. Using Readline
|
||||
is the standard default action if Readline is installed.
|
||||
|
||||
= Command line option
|
||||
|
||||
irb.rb [options] file_name opts
|
||||
options:
|
||||
-f suppress read ~/.irbrc
|
||||
-m bc mode (fraction or matrix are available)
|
||||
-d set $DEBUG to true (same as `ruby -d')
|
||||
-Kc same as `ruby -Kc'
|
||||
-r load-module same as `ruby -r'
|
||||
--verbose command input is echoed(default)
|
||||
--noverbose command input isn't echoed
|
||||
--echo commands are echoed immediately before execution(default)
|
||||
--noecho commands aren't echoed immediately before execution
|
||||
--inspect uses `inspect' for output (the default except bc mode)
|
||||
--noinspect doesn't uses inspect for output
|
||||
--readline uses Readline extension module
|
||||
--noreadline doesn't use Readline extension module
|
||||
--prompt prompt-mode
|
||||
--prompt-mode prompt-mode
|
||||
switches prompt mode. Pre-defined prompt modes are
|
||||
`default', `simple', `xmp' and `inf-ruby'
|
||||
|
||||
--inf-ruby-mode uses prompt appreciate for inf-ruby-mode on emacs.
|
||||
Suppresses --readline.
|
||||
--simple-prompt simple prompt mode
|
||||
--noprompt no prompt
|
||||
--tracer display trace for each execution of commands.
|
||||
--back-trace-limit n
|
||||
displayes backtrace top n and tail n. The default
|
||||
value is 16.
|
||||
--irb_debug n sets internal debug level to n (It shouldn't be used)
|
||||
-v, --version prints the version of irb
|
||||
|
||||
= Configurations
|
||||
|
||||
irb reads `~/.irbrc' when it is invoked. If `~/.irbrb' doesn't exist
|
||||
irb try to read in the order `.irbrc', `irb.rc', `_irbrc' then `$irbrc'.
|
||||
|
||||
The following is altanative to the command line option. To use them
|
||||
type as follows in an irb session.
|
||||
|
||||
IRB.conf[:IRB_NAME]="irb"
|
||||
IRB.conf[:MATH_MODE]=false
|
||||
IRB.conf[:USE_TRACER]=false
|
||||
IRB.conf[:USE_LOADER]=false
|
||||
IRB.conf[:IGNORE_SIGINT]=true
|
||||
IRB.conf[:IGNORE_EOF]=false
|
||||
IRB.conf[:INSPECT_MODE]=nil
|
||||
IRB.conf[:IRB_RC] = nil
|
||||
IRB.conf[:BACK_TRACE_LIMIT]=16
|
||||
IRB.conf[:USE_LOADER] = false
|
||||
IRB.conf[:USE_READLINE] = nil
|
||||
IRB.conf[:USE_TRACER] = false
|
||||
IRB.conf[:IGNORE_SIGINT] = true
|
||||
IRB.conf[:IGNORE_EOF] = false
|
||||
IRB.conf[:PROMPT_MODE] = :DEFALUT
|
||||
IRB.conf[:PROMPT] = {...}
|
||||
IRB.conf[:DEBUG_LEVEL]=0
|
||||
IRB.conf[:VERBOSE]=true
|
||||
|
||||
== Customizing prompt
|
||||
|
||||
To costomize the prompt you set a variable
|
||||
|
||||
IRB.conf[:PROMPT]
|
||||
|
||||
For example, describe as follows in `.irbrc'.
|
||||
|
||||
IRB.conf[:PROMPT][:MY_PROMPT] = { # name of prompt mode
|
||||
:PROMPT_I => nil, # normal prompt
|
||||
:PROMPT_S => nil, # prompt for continuated strings
|
||||
:PROMPT_C => nil, # prompt for continuated statement
|
||||
:RETURN => " ==>%s\n" # format to return value
|
||||
}
|
||||
|
||||
Then, invoke irb with the above prompt mode by
|
||||
|
||||
% irb --prompt my-prompt
|
||||
|
||||
Or add the following in `.irbrc'.
|
||||
|
||||
IRB.conf[:PROMPT_MODE] = :MY_PROMPT
|
||||
|
||||
Constants PROMPT_I, PROMPT_S and PROMPT_C specifies the format.
|
||||
In the prompt specification, some special strings are available.
|
||||
|
||||
%N command name which is running
|
||||
%m to_s of main object (self)
|
||||
%M inspect of main object (self)
|
||||
%l type of string(", ', /, ]), `]' is inner %w[...]
|
||||
%NNi indent level. NN is degits and means as same as printf("%NNd").
|
||||
It can be ommited
|
||||
%NNn line number.
|
||||
%% %
|
||||
|
||||
For instance, the default prompt mode is defined as follows:
|
||||
|
||||
IRB.conf[:PROMPT_MODE][:DEFAULT] = {
|
||||
:PROMPT_I => "%N(%m):%03n:%i> ",
|
||||
:PROMPT_S => "%N(%m):%03n:%i%l ",
|
||||
:PROMPT_C => "%N(%m):%03n:%i* ",
|
||||
:RETURN => "%s\n"
|
||||
}
|
||||
|
||||
RETURN is used to printf.
|
||||
|
||||
== Configurating subirb
|
||||
|
||||
The command line option or IRB.conf specify the default behavior of
|
||||
(sub)irb. On the other hand, each conf of in the next sction `6. Command'
|
||||
is used to individually configurate (sub)irb.
|
||||
|
||||
If proc is set to IRB.conf[:IRB_RC], its subirb will be invoked after
|
||||
execution of that proc under giving the context of irb as its
|
||||
aregument. By this mechanism each subirb can be configurated.
|
||||
|
||||
= Command
|
||||
|
||||
For irb commands, both simple name and `irb_'-prefixed name are prepared.
|
||||
|
||||
--- exit, quit, irb_exit
|
||||
Quits (sub)irb.
|
||||
|
||||
--- conf, irb_context
|
||||
Displays current configuration. Modifing the configuration is
|
||||
achieved by sending message to `conf'.
|
||||
|
||||
--- conf.eval_history = N
|
||||
Sets execution result history.
|
||||
N is a integer or nil. If N > 0, the number of historys is N.
|
||||
If N == 0, the number of historys is unlimited. If N is nill,
|
||||
execution result history isn't used(default).
|
||||
|
||||
--- conf.back_trace_limit
|
||||
Sets display lines of backtrace as top n and tail n.
|
||||
The default value is 16.
|
||||
|
||||
--- conf.debug_level = N
|
||||
Sets debug level of irb.
|
||||
|
||||
--- conf.ignore_eof = true/false
|
||||
Whether ^D (control-d) will be ignored or not.
|
||||
If false is set, ^D means quit.
|
||||
|
||||
--- conf.ignore_sigint= true/false
|
||||
Whether ^C (control-c) will be ignored or not.
|
||||
If false is set, ^D means quit. If true,
|
||||
during input: cancel inputing then return to top level.
|
||||
during execute: abondon current execution.
|
||||
|
||||
--- conf.inf_ruby_mode = true/false
|
||||
Whether inf-ruby-mode or not. The default value is false.
|
||||
|
||||
--- conf.inspect_mode = true/false/nil
|
||||
Specifies inspect mode.
|
||||
true: display inspect
|
||||
false: display to_s
|
||||
nil: inspect mode in non math mode,
|
||||
non inspect mode in math mode.
|
||||
|
||||
--- conf.math_mode
|
||||
Whether bc mode or not.
|
||||
|
||||
--- conf.use_loader = true/false
|
||||
Whether irb's own file reader method is used when load/require or not.
|
||||
This mode is globaly affected (irb wide).
|
||||
|
||||
--- conf.prompt_c
|
||||
prompt for a continuating statement (e.g, immediately after of `if')
|
||||
|
||||
--- conf.prompt_i
|
||||
standard prompt
|
||||
|
||||
--- conf.prompt_s
|
||||
prompt for a continuating string
|
||||
|
||||
--- conf.rc
|
||||
Whether ~/.irbrc is read or not.
|
||||
|
||||
--- conf.use_prompt = true/false
|
||||
Prompting or not.
|
||||
|
||||
--- conf.use_readline = true/false/nil
|
||||
Whether readline is used or not.
|
||||
true: uses
|
||||
false: doen't use
|
||||
nil: intends to use readline except for inf-ruby-mode (default)
|
||||
#
|
||||
#--- conf.verbose=T/F
|
||||
# Whether verbose messages are display or not.
|
||||
|
||||
--- cws, chws, irb_change_workspace [obj]
|
||||
obj will be self. If obj is omitted, self will be home-object, or
|
||||
the main object of first started irb.
|
||||
|
||||
--- pushws, irb_pushws, irb_push_workspace [obj]
|
||||
same as UNIX-shell command pushd.
|
||||
|
||||
--- popws, irb_popws, irb_pop_workspace
|
||||
same as UNIX-shell command popd
|
||||
|
||||
--- irb [obj]
|
||||
Invoke subirb. If obj is given, obj will be self.
|
||||
|
||||
--- jobs, irb_jobs
|
||||
List of subirb
|
||||
|
||||
--- fg n, irb_fg n
|
||||
Switch into specified subirb. The following is candidates of n:
|
||||
|
||||
irb number
|
||||
thhread
|
||||
irb object
|
||||
self(obj which is specified of irb obj)
|
||||
|
||||
--- kill n, irb_kill n
|
||||
Kill subirb. The means of n is as same as the case of irb_fg.
|
||||
|
||||
--- source, irb_source path
|
||||
This is a like UNIX-shell command source. evaluate script in path
|
||||
on current context.
|
||||
|
||||
--- irb_load path, prev
|
||||
irb-version of Ruby's load.
|
||||
|
||||
= System variable
|
||||
|
||||
--- _ The latest value of evaluation (it is local)
|
||||
--- __ The history of evaluation values.
|
||||
__[line_no] return an evaluation value of line number<line_no>. If
|
||||
line_no is a negative, return value before -<line_no> from latest
|
||||
value.
|
||||
|
||||
= Session Example
|
||||
|
||||
dim% ruby irb.rb
|
||||
irb(main):001:0> irb # invoke subirb
|
||||
irb#1(main):001:0> jobs # list of subirbs
|
||||
#0->irb on main (#<Thread:0x400fb7e4> : stop)
|
||||
#1->irb#1 on main (#<Thread:0x40125d64> : running)
|
||||
nil
|
||||
irb#1(main):002:0> fg 0 # switch job
|
||||
nil
|
||||
irb(main):002:0> class Foo;end
|
||||
nil
|
||||
irb(main):003:0> irb Foo # invoke subirb which has the
|
||||
# context of Foo
|
||||
irb#2(Foo):001:0> def foo # define Foo#foo
|
||||
irb#2(Foo):002:1> print 1
|
||||
irb#2(Foo):003:1> end
|
||||
nil
|
||||
irb#2(Foo):004:0> fg 0 # switch job
|
||||
nil
|
||||
irb(main):004:0> jobs # list of job
|
||||
#0->irb on main (#<Thread:0x400fb7e4> : running)
|
||||
#1->irb#1 on main (#<Thread:0x40125d64> : stop)
|
||||
#2->irb#2 on Foo (#<Thread:0x4011d54c> : stop)
|
||||
nil
|
||||
irb(main):005:0> Foo.instance_methods # Foo#foo is defined asurely
|
||||
["foo"]
|
||||
irb(main):006:0> fg 2 # switch job
|
||||
nil
|
||||
irb#2(Foo):005:0> def bar # define Foo#bar
|
||||
irb#2(Foo):006:1> print "bar"
|
||||
irb#2(Foo):007:1> end
|
||||
nil
|
||||
irb#2(Foo):010:0> Foo.instance_methods
|
||||
["bar", "foo"]
|
||||
irb#2(Foo):011:0> fg 0
|
||||
nil
|
||||
irb(main):007:0> f = Foo.new
|
||||
#<Foo:0x4010af3c>
|
||||
irb(main):008:0> irb f # invoke subirb which has the
|
||||
# context of f (instance of Foo)
|
||||
irb#3(#<Foo:0x4010af3c>):001:0> jobs
|
||||
#0->irb on main (#<Thread:0x400fb7e4> : stop)
|
||||
#1->irb#1 on main (#<Thread:0x40125d64> : stop)
|
||||
#2->irb#2 on Foo (#<Thread:0x4011d54c> : stop)
|
||||
#3->irb#3 on #<Foo:0x4010af3c> (#<Thread:0x4010a1e0> : running)
|
||||
nil
|
||||
irb#3(#<Foo:0x4010af3c>):002:0> foo # evaluate f.foo
|
||||
1nil
|
||||
irb#3(#<Foo:0x4010af3c>):003:0> bar # evaluate f.bar
|
||||
barnil
|
||||
irb#3(#<Foo:0x4010af3c>):004:0> kill 1, 2, 3# kill job
|
||||
nil
|
||||
irb(main):009:0> jobs
|
||||
#0->irb on main (#<Thread:0x400fb7e4> : running)
|
||||
nil
|
||||
irb(main):010:0> exit # exit
|
||||
dim%
|
||||
|
||||
= Restrictions
|
||||
|
||||
Because irb evaluates the inputs immediately after the imput is
|
||||
syntactically completed, irb gives slight different result than
|
||||
directly use ruby. Known difference is pointed out here.
|
||||
|
||||
|
||||
== Declaration of the local variable
|
||||
|
||||
The following causes an error in ruby:
|
||||
|
||||
eval "foo = 0"
|
||||
foo
|
||||
--
|
||||
-:2: undefined local variable or method `foo' for #<Object:0x40283118> (NameError)
|
||||
---
|
||||
NameError
|
||||
|
||||
Though, the above will successfully done by irb.
|
||||
|
||||
>> eval "foo = 0"
|
||||
=> 0
|
||||
>> foo
|
||||
=> 0
|
||||
|
||||
Ruby evaluates a code after reading entire of code and determination
|
||||
of the scope of local variables. On the other hand, irb do
|
||||
immediately. More precisely, irb evaluate at first
|
||||
|
||||
evel "foo = 0"
|
||||
|
||||
then foo is defined on this timing. It is because of this
|
||||
incompatibility.
|
||||
|
||||
If you'd like to detect those differences, begin...end can be used:
|
||||
|
||||
>> begin
|
||||
?> eval "foo = 0"
|
||||
>> foo
|
||||
>> end
|
||||
NameError: undefined local variable or method `foo' for #<Object:0x4013d0f0>
|
||||
(irb):3
|
||||
(irb_local_binding):1:in `eval'
|
||||
|
||||
== Here-document
|
||||
|
||||
Implementation of Here-document is incomplete.
|
||||
|
||||
== Symbol
|
||||
|
||||
Irb can not always recognize a symbol as to be Symbol. Concretely, an
|
||||
expression have completed, however Irb regard it as continuation line.
|
||||
|
||||
=end
|
||||
|
||||
% Begin Emacs Environment
|
||||
% Local Variables:
|
||||
% mode: text
|
||||
% comment-column: 0
|
||||
% comment-start: "%"
|
||||
% comment-end: "\n"
|
||||
% End:
|
||||
%
|
Loading…
Add table
Reference in a new issue