mirror of
https://github.com/ruby/ruby.git
synced 2026-10-28 16:36:20 +08:00
Just leaves `SyntaxSuggest.handle_error` and `SyntaxSuggest::VERSION` visible. Removes some public/private annotations since ony public stuff is now documented. https://github.com/ruby/syntax_suggest/commit/18c62ce100
29 lines
751 B
Ruby
29 lines
751 B
Ruby
# frozen_string_literal: true
|
|
|
|
module SyntaxSuggest
|
|
# Acts like a StringIO with reduced API, but without having to require that
|
|
# class.
|
|
#
|
|
# The original codebase emitted directly to $stderr, but now SyntaxError#detailed_message
|
|
# needs a string output. To accomplish that we kept the original print infrastructure in place and
|
|
# added this class to accumulate the print output into a string.
|
|
class MiniStringIO # :nodoc:
|
|
EMPTY_ARG = Object.new
|
|
|
|
def initialize(isatty: $stderr.isatty)
|
|
@string = +""
|
|
@isatty = isatty
|
|
end
|
|
|
|
attr_reader :isatty
|
|
def puts(value = EMPTY_ARG, **)
|
|
if !value.equal?(EMPTY_ARG)
|
|
@string << value
|
|
end
|
|
@string << $/
|
|
end
|
|
|
|
attr_reader :string
|
|
end
|
|
end
|