Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > Буфер вывода в Ruby?


Автор: Drkwv 8.2.2009, 15:23
Код

arr = ["Нас","нужно","показать"]
p arr


Как сделать то же самое, но пропустить результат работы "p" через iconv, чтобы распечатка массива нормально отображалась  в кодировке 866 в windows-консоли?


Я пробовал вот это, но не получилось:
Код

irb(main):001:0> str = ""
=> ""
irb(main):002:0> arr = ["слова на русском","языке"]
=> ["\341\253\256\242\240 \255\240 \340\343\341\341\252\256\254", "\357\247\353\
252\245"]
irb(main):003:0> str.p arr
NoMethodError: private method `p' called for "":String
        from (irb):3
irb(main):004:0> str.puts arr
NoMethodError: private method `puts' called for "":String
        from (irb):4
        from :0
irb(main):005:0> exit

Автор: Drkwv 11.2.2009, 23:14
Ruby ob_start just like in PHP: ^_^ (жалкая пародия собственного сочинения, иллюстрирующая способ буферизации вывода в руби)

Код

require "stringio"

class OB
  #@new_io
  #@old_io

  def self.start
    @new_io = StringIO.new
    @old_io = $stdout
    $stdout = @new_io
  end

  def self.get_clean
    $stdout = @old_io
    @new_io.rewind
    @new_io.read
  end

end

OB.start
p [1,2,"33"]
str = OB.get_clean

puts "who borrowed a knife?"
puts str

Автор: kronos_vano 12.2.2009, 05:03
Интересно, зачем это могло понадобиться?

Автор: Drkwv 12.2.2009, 18:19
Цитата(Drkwv @ 8.2.2009,  15:23)
чтобы распечатка массива нормально отображалась в кодировке 866 в windows-консоли

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)