irb 1.3.7 → 1.3.8.pre.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ddb63fc9d57700014a7da313e20504596ca42dfee0952547fa545d726f08d7d6
4
- data.tar.gz: cc4ee2f880d56dc7f792ecc406f489f8555601d19499f45d8f8828cc260ed1b0
3
+ metadata.gz: 1373231cc70b1b86ba8a0fc990fb45c4d2790914f27c1055ccf034e555aea55c
4
+ data.tar.gz: 7451c4a722684f4d265d9fc7dc408b765dba980fb169a0f72a9aa469df1ce9ed
5
5
  SHA512:
6
- metadata.gz: c5b128b8ce5457862489e313231af33167802619c3847da526dda30c83f7fc96d1a248d2916e17da4cbd45f8d30aee8c181237182b97b5741cf4bc4c13568bfb
7
- data.tar.gz: 61147b2b4e76f34076043feaa84feeb2e893a140d3d7d1e5013a00f87f27f694802f8ae21788709a7ee03c5b41ee445735aec93bfedbeaa9fcf02d6bf06f705d
6
+ metadata.gz: 766139b77dd400d4df26e471587f82b8e37c98aa75ef8701cb0c89a4b81c081ece91bc8fcb7bc9a1ad6ced8d1d249ed688089878824b90383f3a07cf09aa12cc
7
+ data.tar.gz: eb003c7fcf1f5801f6da77f8535122d4f881d2f85abd0ee7c226f937ab84b3a24a8a8f21864696dfdcbe3d29d491b444a3cb67524192d3202e747f63bf6652f8
data/Gemfile CHANGED
@@ -1,15 +1,13 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
-
5
3
  gemspec
6
4
 
7
5
  group :development do
8
- gem "bundler"
9
6
  is_unix = RUBY_PLATFORM =~ /(aix|darwin|linux|(net|free|open)bsd|cygwin|solaris|irix|hpux)/i
10
7
  is_truffleruby = RUBY_DESCRIPTION =~ /truffleruby/
11
8
  gem 'vterm', '>= 0.0.5' if is_unix && ENV['WITH_VTERM']
12
9
  gem 'yamatanooroti', '>= 0.0.6'
13
10
  gem "rake"
14
11
  gem "stackprof" if is_unix && !is_truffleruby
12
+ gem "test-unit"
15
13
  end
data/Rakefile CHANGED
@@ -4,14 +4,23 @@ require "rake/testtask"
4
4
  Rake::TestTask.new(:test) do |t|
5
5
  t.libs << "test" << "test/lib"
6
6
  t.libs << "lib"
7
+ t.ruby_opts << "-rhelper"
7
8
  t.test_files = FileList["test/irb/test_*.rb"]
8
9
  end
9
10
 
10
11
  Rake::TestTask.new(:test_yamatanooroti) do |t|
11
- t.libs << 'test'
12
+ t.libs << 'test' << "test/lib"
12
13
  t.libs << 'lib'
13
14
  #t.loader = :direct
15
+ t.ruby_opts << "-rhelper"
14
16
  t.pattern = 'test/irb/yamatanooroti/test_*.rb'
15
17
  end
16
18
 
19
+ task :sync_tool do
20
+ require 'fileutils'
21
+ FileUtils.cp "../ruby/tool/lib/core_assertions.rb", "./test/lib"
22
+ FileUtils.cp "../ruby/tool/lib/envutil.rb", "./test/lib"
23
+ FileUtils.cp "../ruby/tool/lib/find_executable.rb", "./test/lib"
24
+ end
25
+
17
26
  task :default => :test
data/doc/irb/irb.rd.ja CHANGED
@@ -40,15 +40,18 @@ irbの使い方は, Rubyさえ知っていればいたって簡単です. 基本
40
40
  irb.rb [options] file_name opts
41
41
  options:
42
42
  -f ~/.irbrc を読み込まない.
43
- -m bcモード(分数, 行列の計算ができる)
44
43
  -d $DEBUG をtrueにする(ruby -d と同じ)
45
- -Kc ruby -Kcと同じ
46
44
  -r load-module ruby -r と同じ.
47
- --verbose これから実行する行を表示する(デフォルト)
48
- --noverbose これから実行する行を表示しない
49
- --echo 実行結果を表示する(デフォルト)
50
- --noecho 実行結果を表示しない
51
- --inspect 結果出力にinspectを用いる(bcモード以外はデフォルト).
45
+ -I path $LOAD_PATH に path を追加する.
46
+ -U ruby -U と同じ.
47
+ -E enc ruby -E と同じ.
48
+ -w ruby -w と同じ.
49
+ -W[level=2] ruby -W と同じ.
50
+ --context-mode n 新しいワークスペースを作成した時に関連する Binding
51
+ オブジェクトの作成方法を 0 から 3 のいずれかに設定する.
52
+ --echo 実行結果を表示する(デフォルト).
53
+ --noecho 実行結果を表示しない.
54
+ --inspect 結果出力にinspectを用いる.
52
55
  --noinspect 結果出力にinspectを用いない.
53
56
  --singleline シングルラインエディタを利用する.
54
57
  --nosingleline シングルラインエディタを利用しない. デフォルトの動
@@ -56,23 +59,30 @@ irbの使い方は, Rubyさえ知っていればいたって簡単です. 基本
56
59
  用しようとする.
57
60
  --colorize 色付けを利用する.
58
61
  --nocolorize 色付けを利用しない.
62
+ --autocomplete オートコンプリートを利用する.
63
+ --noautocomplete オートコンプリートを利用しない.
59
64
  --prompt prompt-mode
60
65
  --prompt-mode prompt-mode
61
66
  プロンプトモードを切替えます. 現在定義されているプ
62
67
  ロンプトモードは, default, simple, xmp, inf-rubyが
63
- 用意されています. デフォルトはdefaultプロンプトモー
64
- ドになっています.
65
-
68
+ 用意されています.
66
69
  --inf-ruby-mode emacsのinf-ruby-mode用のプロンプト表示を行なう. 特
67
70
  に指定がない限り, ラインエディタは使わなくなる.
68
71
  --simple-prompt
69
72
  非常にシンプルなプロンプトを用いるモードです.
70
73
  --noprompt プロンプト表示を行なわない.
74
+ --single-irb irb 中で self を実行して得られるオブジェクトをサ
75
+ ブ irb と共有する.
71
76
  --tracer コマンド実行時にトレースを行なう.
72
77
  --back-trace-limit n
73
78
  バックトレース表示をバックトレースの頭から n, 後ろ
74
79
  からnだけ行なう. デフォルトは16
75
- -v, --version irbのバージョンを表示する
80
+
81
+ --verbose 詳細なメッセージを出力する.
82
+ --noverbose 詳細なメッセージを出力しない(デフォルト).
83
+ -v, --version irbのバージョンを表示する.
84
+ -h, --help irb のヘルプを表示する.
85
+ -- 以降のコマンドライン引数をオプションとして扱わない.
76
86
 
77
87
  = コンフィギュレーション
78
88
 
@@ -137,12 +147,12 @@ PROMPT_I, PROMPT_N, PROMPT_S, PROMPT_Cは, フォーマットを指定します.
137
147
 
138
148
  例えば, デフォルトのプロンプトモードは:
139
149
 
140
- IRB.conf[:PROMPT_MODE][:DEFAULT] = {
150
+ IRB.conf[:PROMPT][:DEFAULT] = {
141
151
  :PROMPT_I => "%N(%m):%03n:%i> ",
142
152
  :PROMPT_N => "%N(%m):%03n:%i> ",
143
153
  :PROMPT_S => "%N(%m):%03n:%i%l ",
144
154
  :PROMPT_C => "%N(%m):%03n:%i* ",
145
- :RETURN => "%s\n"
155
+ :RETURN => "=> %s\n"
146
156
  }
147
157
 
148
158
  となっています.
@@ -374,7 +384,7 @@ rubyでは, 以下のプログラムはエラーになります.
374
384
  パイルしてローカル変数を決定するからです. それに対し, irbは実行可能に
375
385
  なる(式が閉じる)と自動的に評価しているからです. 上記の例では,
376
386
 
377
- evel "foo = 0"
387
+ eval "foo = 0"
378
388
 
379
389
  を行なった時点で評価を行ない, その時点で変数が定義されるため, 次式で
380
390
  変数fooは定義されているからです.
data/irb.gemspec CHANGED
@@ -36,5 +36,5 @@ Gem::Specification.new do |spec|
36
36
 
37
37
  spec.required_ruby_version = Gem::Requirement.new(">= 2.5")
38
38
 
39
- spec.add_dependency "reline", ">= 0.2.7"
39
+ spec.add_dependency "reline", ">= 0.2.8.pre.4"
40
40
  end
data/lib/irb/context.rb CHANGED
@@ -54,6 +54,7 @@ module IRB
54
54
  @use_multiline = nil
55
55
  end
56
56
  @use_colorize = IRB.conf[:USE_COLORIZE]
57
+ @use_autocomplete = IRB.conf[:USE_AUTOCOMPLETE]
57
58
  @verbose = IRB.conf[:VERBOSE]
58
59
  @io = nil
59
60
 
@@ -185,6 +186,8 @@ module IRB
185
186
  #
186
187
  # A copy of the default <code>IRB.conf[:USE_COLORIZE]</code>
187
188
  attr_reader :use_colorize
189
+ # A copy of the default <code>IRB.conf[:USE_AUTOCOMPLETE]</code>
190
+ attr_reader :use_autocomplete
188
191
  # A copy of the default <code>IRB.conf[:INSPECT_MODE]</code>
189
192
  attr_reader :inspect_mode
190
193
 
@@ -311,6 +314,8 @@ module IRB
311
314
  alias use_readline? use_singleline
312
315
  # Alias for #use_colorize
313
316
  alias use_colorize? use_colorize
317
+ # Alias for #use_autocomplete
318
+ alias use_autocomplete? use_autocomplete
314
319
  # Alias for #rc
315
320
  alias rc? rc
316
321
  alias ignore_sigint? ignore_sigint
data/lib/irb/init.rb CHANGED
@@ -45,6 +45,7 @@ module IRB # :nodoc:
45
45
 
46
46
  @CONF[:USE_SINGLELINE] = false unless defined?(ReadlineInputMethod)
47
47
  @CONF[:USE_COLORIZE] = !ENV['NO_COLOR']
48
+ @CONF[:USE_AUTOCOMPLETE] = true
48
49
  @CONF[:INSPECT_MODE] = true
49
50
  @CONF[:USE_TRACER] = false
50
51
  @CONF[:USE_LOADER] = false
@@ -274,6 +275,10 @@ module IRB # :nodoc:
274
275
  @CONF[:USE_COLORIZE] = true
275
276
  when "--nocolorize"
276
277
  @CONF[:USE_COLORIZE] = false
278
+ when "--autocomplete"
279
+ @CONF[:USE_AUTOCOMPLETE] = true
280
+ when "--noautocomplete"
281
+ @CONF[:USE_AUTOCOMPLETE] = false
277
282
  when /^--prompt-mode(?:=(.+))?/, /^--prompt(?:=(.+))?/
278
283
  opt = $1 || argv.shift
279
284
  prompt_mode = opt.upcase.tr("-", "_").intern
@@ -14,6 +14,7 @@ require_relative 'magic-file'
14
14
  require_relative 'completion'
15
15
  require 'io/console'
16
16
  require 'reline'
17
+ require 'rdoc'
17
18
 
18
19
  module IRB
19
20
  STDIN_FILE_NAME = "(line)" # :nodoc:
@@ -294,6 +295,10 @@ module IRB
294
295
  end
295
296
  end
296
297
  Reline.dig_perfect_match_proc = IRB::InputCompletor::PerfectMatchedProc
298
+ Reline.autocompletion = IRB.conf[:USE_AUTOCOMPLETE]
299
+ if IRB.conf[:USE_AUTOCOMPLETE]
300
+ Reline.add_dialog_proc(:show_doc, SHOW_DOC_DIALOG, Reline::DEFAULT_DIALOG_CONTEXT)
301
+ end
297
302
  end
298
303
 
299
304
  def check_termination(&block)
@@ -308,6 +313,57 @@ module IRB
308
313
  @auto_indent_proc = block
309
314
  end
310
315
 
316
+ SHOW_DOC_DIALOG = ->() {
317
+ begin
318
+ require 'rdoc'
319
+ rescue LoadError
320
+ return nil
321
+ end
322
+ if just_cursor_moving and completion_journey_data.nil?
323
+ return nil
324
+ end
325
+ cursor_pos_to_render, result, pointer, dialog = context.pop(4)
326
+ return nil if result.nil? or pointer.nil? or pointer < 0
327
+ name = result[pointer]
328
+ name = IRB::InputCompletor.retrieve_completion_data(name, doc_namespace: true)
329
+
330
+ driver = RDoc::RI::Driver.new
331
+ begin
332
+ name = driver.expand_name(name)
333
+ rescue RDoc::RI::Driver::NotFoundError
334
+ return nil
335
+ rescue
336
+ return nil # unknown error
337
+ end
338
+ doc = nil
339
+ used_for_class = false
340
+ if not name =~ /#|\./
341
+ found, klasses, includes, extends = driver.classes_and_includes_and_extends_for(name)
342
+ if not found.empty?
343
+ doc = driver.class_document(name, found, klasses, includes, extends)
344
+ used_for_class = true
345
+ end
346
+ end
347
+ unless used_for_class
348
+ doc = RDoc::Markup::Document.new
349
+ begin
350
+ driver.add_method(doc, name)
351
+ rescue RDoc::RI::Driver::NotFoundError
352
+ doc = nil
353
+ rescue
354
+ return nil # unknown error
355
+ end
356
+ end
357
+ return nil if doc.nil?
358
+ formatter = RDoc::Markup::ToAnsi.new
359
+ formatter.width = 40
360
+ str = doc.accept(formatter)
361
+
362
+ x = cursor_pos_to_render.x + 40
363
+ y = cursor_pos_to_render.y + pointer - dialog.scroll_top
364
+ DialogRenderInfo.new(pos: Reline::CursorPos.new(x, y), contents: str.split("\n"), bg_color: '49')
365
+ }
366
+
311
367
  # Reads the next line from this input method.
312
368
  #
313
369
  # See IO#gets for more information.
@@ -30,6 +30,8 @@ Usage: irb.rb [options] [programfile] [arguments]
30
30
  --nosingleline Don't use singleline editor module
31
31
  --colorize Use colorization
32
32
  --nocolorize Don't use colorization
33
+ --autocomplete Use autocompletion
34
+ --noautocomplete Don't use autocompletion
33
35
  --prompt prompt-mode/--prompt-mode prompt-mode
34
36
  Switch prompt mode. Pre-defined prompt modes are
35
37
  `default', `simple', `xmp' and `inf-ruby'
@@ -29,6 +29,8 @@ Usage: irb.rb [options] [programfile] [arguments]
29
29
  --nosingleline シングルラインエディタを利用しない.
30
30
  --colorize 色付けを利用する.
31
31
  --nocolorize 色付けを利用しない.
32
+ --autocomplete オートコンプリートを利用する.
33
+ --noautocomplete オートコンプリートを利用しない.
32
34
  --prompt prompt-mode/--prompt-mode prompt-mode
33
35
  プロンプトモードを切替えます. 現在定義されているプ
34
36
  ロンプトモードは, default, simple, xmp, inf-rubyが
data/lib/irb/version.rb CHANGED
@@ -11,7 +11,7 @@
11
11
  #
12
12
 
13
13
  module IRB # :nodoc:
14
- VERSION = "1.3.7"
14
+ VERSION = "1.3.8.pre.4"
15
15
  @RELEASE_VERSION = VERSION
16
- @LAST_UPDATE_DATE = "2021-08-12"
16
+ @LAST_UPDATE_DATE = "2021-08-31"
17
17
  end
data/lib/irb.rb CHANGED
@@ -72,6 +72,8 @@ require_relative "irb/easter-egg"
72
72
  # --nosingleline Don't use singleline editor module
73
73
  # --colorize Use colorization
74
74
  # --nocolorize Don't use colorization
75
+ # --autocomplete Use autocompletion
76
+ # --noautocomplete Don't use autocompletion
75
77
  # --prompt prompt-mode/--prompt-mode prompt-mode
76
78
  # Switch prompt mode. Pre-defined prompt modes are
77
79
  # `default', `simple', `xmp' and `inf-ruby'
@@ -114,6 +116,7 @@ require_relative "irb/easter-egg"
114
116
  # IRB.conf[:USE_SINGLELINE] = nil
115
117
  # IRB.conf[:USE_COLORIZE] = true
116
118
  # IRB.conf[:USE_TRACER] = false
119
+ # IRB.conf[:USE_AUTOCOMPLETE] = true
117
120
  # IRB.conf[:IGNORE_SIGINT] = true
118
121
  # IRB.conf[:IGNORE_EOF] = false
119
122
  # IRB.conf[:PROMPT_MODE] = :DEFAULT
data/man/irb.1 CHANGED
@@ -18,6 +18,7 @@
18
18
  .Op Fl - Ns Oo no Oc Ns singleline
19
19
  .Op Fl - Ns Oo no Oc Ns echo
20
20
  .Op Fl - Ns Oo no Oc Ns colorize
21
+ .Op Fl - Ns Oo no Oc Ns autocomplete
21
22
  .Op Fl - Ns Oo no Oc Ns verbose
22
23
  .Op Fl -prompt Ar mode
23
24
  .Op Fl -prompt-mode Ar mode
@@ -118,6 +119,13 @@ Use colorization.
118
119
  Don't use colorization.
119
120
  .Pp
120
121
  .Pp
122
+ .It Fl -autocomplete
123
+ Use autocompletion.
124
+ .Pp
125
+ .It Fl -noautocomplete
126
+ Don't use autocompletion.
127
+ .Pp
128
+ .Pp
121
129
  .It Fl -verbose
122
130
  Show details.
123
131
  .Pp
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: irb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.7
4
+ version: 1.3.8.pre.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keiju ISHITSUKA
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-08-12 00:00:00.000000000 Z
11
+ date: 2021-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: reline
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.2.7
19
+ version: 0.2.8.pre.4
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.2.7
26
+ version: 0.2.8.pre.4
27
27
  description: Interactive Ruby command-line tool for REPL (Read Eval Print Loop).
28
28
  email:
29
29
  - keiju@ruby-lang.org
@@ -108,9 +108,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
108
108
  version: '2.5'
109
109
  required_rubygems_version: !ruby/object:Gem::Requirement
110
110
  requirements:
111
- - - ">="
111
+ - - ">"
112
112
  - !ruby/object:Gem::Version
113
- version: '0'
113
+ version: 1.3.1
114
114
  requirements: []
115
115
  rubygems_version: 3.2.22
116
116
  signing_key: