irb 1.2.5 → 1.2.6

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: 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