[ruby/irb] Page show_source's output

(https://github.com/ruby/irb/pull/719)

https://github.com/ruby/irb/commit/3cedc5cb62
This commit is contained in:
Stan Lo 2023-09-22 14:00:25 +01:00 committed by git
parent c0d27af114
commit f59b488b5a
2 changed files with 19 additions and 12 deletions

View File

@ -2,6 +2,7 @@
require_relative "nop"
require_relative "../source_finder"
require_relative "../pager"
require_relative "../color"
module IRB
@ -40,12 +41,16 @@ module IRB
private
def show_source(source)
puts
puts "#{bold("From")}: #{source.file}:#{source.first_line}"
puts
code = IRB::Color.colorize_code(File.read(source.file))
puts code.lines[(source.first_line - 1)...source.last_line].join
puts
file_content = IRB::Color.colorize_code(File.read(source.file))
code = file_content.lines[(source.first_line - 1)...source.last_line].join
content = <<~CONTENT
#{bold("From")}: #{source.file}:#{source.first_line}
#{code}
CONTENT
Pager.page_content(content)
end
def bold(str)

View File

@ -6,6 +6,11 @@ require_relative "helper"
module TestIRB
class InputTest < IntegrationTestCase
def test_symbol_aliases_are_handled_correctly
write_rc <<~RUBY
# disable pager
STDIN.singleton_class.define_method(:tty?) { false }
RUBY
write_ruby <<~'RUBY'
class Foo
end
@ -21,12 +26,11 @@ module TestIRB
end
def test_symbol_aliases_are_handled_correctly_with_singleline_mode
@irbrc = Tempfile.new('irbrc')
@irbrc.write <<~RUBY
write_rc <<~RUBY
# disable pager
STDIN.singleton_class.define_method(:tty?) { false }
IRB.conf[:USE_SINGLELINE] = true
RUBY
@irbrc.close
@envs['IRBRC'] = @irbrc.path
write_ruby <<~'RUBY'
class Foo
@ -43,8 +47,6 @@ module TestIRB
# Make sure it's tested in singleline mode
assert_include output, "InputMethod: ReadlineInputMethod"
assert_include output, "From: #{@ruby_file.path}:1"
ensure
@irbrc.unlink if @irbrc
end
def test_symbol_aliases_dont_affect_ruby_syntax