summaryrefslogtreecommitdiff
path: root/lib/syntax_suggest/mini_stringio.rb
blob: 1a82572eeb063fc4bbe6f4b5ea7558eefdc3638e (plain)
123456789101112131415161718192021222324252627282930
# frozen_string_literal: true module SyntaxSuggest # Mini String IO [Private] # # 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 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 
close