[#30589] [Bug #3391] Use single exclamation mark instead of double exclamation mark for IRB — Diego Viola <redmine@...>

Bug #3391: Use single exclamation mark instead of double exclamation mark for IRB

10 messages 2010/06/04

[#30672] [Bug #3411] Time.local 1916,5,1 #=> 1916-04-30 23:00:00 +0100 — Benoit Daloze <redmine@...>

Bug #3411: Time.local 1916,5,1 #=> 1916-04-30 23:00:00 +0100

12 messages 2010/06/08

[#30699] [Bug #3419] 1.9.2-preview3 possible bug with Rails 3 active_record sqlite_adapter — Joe Sak <redmine@...>

Bug #3419: 1.9.2-preview3 possible bug with Rails 3 active_record sqlite_adapter

9 messages 2010/06/09

[#30734] [Bug #3428] ri outputs ansi escape sequences even when stdout is not a tty — caleb clausen <redmine@...>

Bug #3428: ri outputs ansi escape sequences even when stdout is not a tty

11 messages 2010/06/11

[#30756] [Feature #3436] Spawn the timer thread lazily — Maximilian Gass <redmine@...>

Feature #3436: Spawn the timer thread lazily

15 messages 2010/06/13
[#32686] [Ruby 1.9-Feature#3436] Spawn the timer thread lazily — Mark Somerville <redmine@...> 2010/10/04

Issue #3436 has been updated by Mark Somerville.

[ruby-core:30740] [Bug #3428] ri outputs ansi escape sequences even when stdout is not a tty

From: Yusuke Endoh <redmine@...>
Date: 2010-06-11 16:50:36 UTC
List: ruby-core #30740
Issue #3428 has been updated by Yusuke Endoh.

Assigned to set to Eric Hodel
Target version set to 1.9.2

Hi,

2010/6/11 caleb clausen <redmine@ruby-lang.org>:
> ri should only use ansi escape sequences if explicitly asked for or if stdout is known to be a tty. Otherwise, ugliness will occur when piping ri's output to something else. For instance, here are the first few lines displayed when I type "ri exec|less":
>
> ESC[0mESC[1;32m.execESC[m
>
> (from ruby core)
> ESC[32mImplementation from KernelESC[m
> ------------------------------------------------------------------------------
> ?exec([env,] command... [,options])


Confirmed.  "ri --help" says:

    -f, --format=NAME                Uses the selected formatter. The default
                                     formatter is bs for paged output and ansi
                                     otherwise. Valid formatters are:
                                     ansi bs html rdoc

But ansi is used for paged output in this case.  So this is a bug.

Eric, could you review this patch?


diff --git a/lib/rdoc/ri/driver.rb b/lib/rdoc/ri/driver.rb
index b552335..0c04db6 100644
--- a/lib/rdoc/ri/driver.rb
+++ b/lib/rdoc/ri/driver.rb
@@ -546,7 +546,7 @@ Options may also be set in the 'RI' environment variable.
 
   def display document
     page do |io|
-      text = document.accept formatter
+      text = document.accept formatter(io)
 
       io.write text
     end
@@ -795,10 +795,10 @@ Options may also be set in the 'RI' environment variable.
   # Creates a new RDoc::Markup::Formatter.  If a formatter is given with -f,
   # use it.  If we're outputting to a pager, use bs, otherwise ansi.
 
-  def formatter
+  def formatter(io)
     if @formatter_klass then
       @formatter_klass.new
-    elsif paging? then
+    elsif paging? or !io.tty? then
       RDoc::Markup::ToBs.new
     else
       RDoc::Markup::ToAnsi.new

-- 
Yusuke Endoh <mame@tsg.ne.jp>
----------------------------------------
http://redmine.ruby-lang.org/issues/show/3428

----------------------------------------
http://redmine.ruby-lang.org

In This Thread