irb 1.2.5 → 1.2.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: de71d4d5a30eb0330993cf6bcd6de92b664d80b02cb924e17d0681df9528de64
4
- data.tar.gz: 12eff61ad92be7895d0ecb010e06b97a7e26429e2fbcf040852e8691fbb4e8f3
3
+ metadata.gz: 5cafd02c241d954487f11903643ef4a4218d39352c889f3be57a1e9314acb174
4
+ data.tar.gz: 0f4afd5294f5357835df0519b0a32cba425cf40a1afc225cf3acf0ae4d0cb04a
5
5
  SHA512:
6
- metadata.gz: 5fdb0bb9301777bfba8e3b26c8b574de58594d8f8884e09704e97a04610c7c7360eeefeb1d3918a380f370856943b627873874bca0cbb3461010e67cf3072e22
7
- data.tar.gz: e8ba6bd58ebd09ca4cf2a1863d57946d1c538be5873f91e469558d752e0a831783f2e173886d706b259c97c602b74ac7ef606492a11841fb62ee603401b238ad
6
+ metadata.gz: 958f6f1750e5cb951110a1de09beebee65e24c931989da99dd05a1207f050e96f37490e6def0c484b18a23a91c66ad8119a7aa2c5e48c7ad6eacb4590ea4c397
7
+ data.tar.gz: 1c6d64ed48b51f189ba9d5846ffdfeae02eff8e44554c66d54eeaab597b96381bdbe78aeba6f2f5fbb0929ee5517e87584eeebd50c65bc93e5cd3321c1b8260e
@@ -78,7 +78,7 @@ Gem::Specification.new do |spec|
78
78
 
79
79
  spec.required_ruby_version = Gem::Requirement.new(">= 2.5")
80
80
 
81
- spec.add_dependency "reline", ">= 0.0.1"
81
+ spec.add_dependency "reline", ">= 0.1.5"
82
82
  spec.add_development_dependency "bundler"
83
83
  spec.add_development_dependency "rake"
84
84
  end
data/lib/irb.rb CHANGED
@@ -10,6 +10,7 @@
10
10
  #
11
11
  #
12
12
  require "ripper"
13
+ require "reline"
13
14
 
14
15
  require_relative "irb/init"
15
16
  require_relative "irb/context"
@@ -538,7 +539,15 @@ module IRB
538
539
  begin
539
540
  line.untaint if RUBY_VERSION < '2.7'
540
541
  @context.evaluate(line, line_no, exception: exc)
541
- output_value if @context.echo? && (@context.echo_on_assignment? || !assignment_expression?(line))
542
+ if @context.echo?
543
+ if assignment_expression?(line)
544
+ if @context.echo_on_assignment?
545
+ output_value(@context.omit_on_assignment?)
546
+ end
547
+ else
548
+ output_value
549
+ end
550
+ end
542
551
  rescue Interrupt => exc
543
552
  rescue SystemExit, SignalException
544
553
  raise
@@ -737,9 +746,32 @@ module IRB
737
746
  p
738
747
  end
739
748
 
740
- def output_value # :nodoc:
749
+ def output_value(omit = false) # :nodoc:
741
750
  str = @context.inspect_last_value
742
751
  multiline_p = str.include?("\n")
752
+ if omit
753
+ winwidth = @context.io.winsize.last
754
+ if multiline_p
755
+ first_line = str.split("\n").first
756
+ result = @context.newline_before_multiline_output? ? (@context.return_format % first_line) : first_line
757
+ output_width = Reline::Unicode.calculate_width(result, true)
758
+ diff_size = output_width - Reline::Unicode.calculate_width(first_line, true)
759
+ if diff_size.positive? and output_width > winwidth
760
+ lines, _ = Reline::Unicode.split_by_width(first_line, winwidth - diff_size - 3)
761
+ str = "%s...\e[0m" % lines.first
762
+ multiline_p = false
763
+ else
764
+ str.gsub!(/(\A.*?\n).*/m, "\\1...")
765
+ end
766
+ else
767
+ output_width = Reline::Unicode.calculate_width(@context.return_format % str, true)
768
+ diff_size = output_width - Reline::Unicode.calculate_width(str, true)
769
+ if diff_size.positive? and output_width > winwidth
770
+ lines, _ = Reline::Unicode.split_by_width(str, winwidth - diff_size - 3)
771
+ str = "%s...\e[0m" % lines.first
772
+ end
773
+ end
774
+ end
743
775
  if multiline_p && @context.newline_before_multiline_output?
744
776
  printf @context.return_format, "\n#{str}"
745
777
  else
@@ -131,7 +131,12 @@ module IRB
131
131
 
132
132
  @echo_on_assignment = IRB.conf[:ECHO_ON_ASSIGNMENT]
133
133
  if @echo_on_assignment.nil?
134
- @echo_on_assignment = false
134
+ @echo_on_assignment = true
135
+ end
136
+
137
+ @omit_on_assignment = IRB.conf[:OMIT_ON_ASSIGNMENT]
138
+ if @omit_on_assignment.nil?
139
+ @omit_on_assignment = true
135
140
  end
136
141
 
137
142
  @newline_before_multiline_output = IRB.conf[:NEWLINE_BEFORE_MULTILINE_OUTPUT]
@@ -251,13 +256,27 @@ module IRB
251
256
  attr_accessor :echo
252
257
  # Whether to echo for assignment expressions
253
258
  #
254
- # Uses <code>IRB.conf[:ECHO_ON_ASSIGNMENT]</code> if available, or defaults to +false+.
259
+ # Uses <code>IRB.conf[:ECHO_ON_ASSIGNMENT]</code> if available, or defaults to +true+.
255
260
  #
256
261
  # a = "omg"
257
- # IRB.CurrentContext.echo_on_assignment = true
258
- # a = "omg"
259
262
  # #=> omg
263
+ # IRB.CurrentContext.echo_on_assignment = false
264
+ # a = "omg"
260
265
  attr_accessor :echo_on_assignment
266
+ # Whether to omit echo for assignment expressions
267
+ #
268
+ # Uses <code>IRB.conf[:OMIT_ON_ASSIGNMENT]</code> if available, or defaults to +true+.
269
+ #
270
+ # a = [1] * 10
271
+ # #=> [1, 1, 1, 1, 1, 1, 1, 1, ...
272
+ # [1] * 10
273
+ # #=> [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
274
+ # IRB.CurrentContext.omit_on_assignment = false
275
+ # a = [1] * 10
276
+ # #=> [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
277
+ # [1] * 10
278
+ # #=> [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
279
+ attr_accessor :omit_on_assignment
261
280
  # Whether a newline is put before multiline output.
262
281
  #
263
282
  # Uses <code>IRB.conf[:NEWLINE_BEFORE_MULTILINE_OUTPUT]</code> if available,
@@ -306,6 +325,7 @@ module IRB
306
325
  alias ignore_eof? ignore_eof
307
326
  alias echo? echo
308
327
  alias echo_on_assignment? echo_on_assignment
328
+ alias omit_on_assignment? omit_on_assignment
309
329
  alias newline_before_multiline_output? newline_before_multiline_output
310
330
 
311
331
  # Returns whether messages are displayed or not.
@@ -52,6 +52,7 @@ module IRB # :nodoc:
52
52
  @CONF[:IGNORE_EOF] = false
53
53
  @CONF[:ECHO] = nil
54
54
  @CONF[:ECHO_ON_ASSIGNMENT] = nil
55
+ @CONF[:OMIT_ON_ASSIGNMENT] = nil
55
56
  @CONF[:VERBOSE] = nil
56
57
 
57
58
  @CONF[:EVAL_HISTORY] = nil
@@ -177,6 +178,10 @@ module IRB # :nodoc:
177
178
  @CONF[:ECHO_ON_ASSIGNMENT] = true
178
179
  when "--noecho-on-assignment"
179
180
  @CONF[:ECHO_ON_ASSIGNMENT] = false
181
+ when "--omit-on-assignment"
182
+ @CONF[:OMIT_ON_ASSIGNMENT] = true
183
+ when "--noomit-on-assignment"
184
+ @CONF[:OMIT_ON_ASSIGNMENT] = false
180
185
  when "--verbose"
181
186
  @CONF[:VERBOSE] = true
182
187
  when "--noverbose"
@@ -12,6 +12,7 @@
12
12
  require_relative 'src_encoding'
13
13
  require_relative 'magic-file'
14
14
  require_relative 'completion'
15
+ require 'io/console'
15
16
  require 'reline'
16
17
 
17
18
  module IRB
@@ -36,6 +37,14 @@ module IRB
36
37
  end
37
38
  public :gets
38
39
 
40
+ def winsize
41
+ if instance_variable_defined?(:@stdout)
42
+ @stdout.winsize
43
+ else
44
+ [24, 80]
45
+ end
46
+ end
47
+
39
48
  # Whether this input method is still readable when there is no more data to
40
49
  # read.
41
50
  #
@@ -11,7 +11,7 @@
11
11
  #
12
12
 
13
13
  module IRB # :nodoc:
14
- VERSION = "1.2.5"
14
+ VERSION = "1.2.6"
15
15
  @RELEASE_VERSION = VERSION
16
16
  @LAST_UPDATE_DATE = "2020-09-14"
17
17
  end
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.2.5
4
+ version: 1.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keiju ISHITSUKA
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.0.1
19
+ version: 0.1.5
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.0.1
26
+ version: 0.1.5
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement