rubyworks / ansi

Set of ANSI Code based classes and modules for Ruby

Home Page:https://rubyworks.github.com/ansi

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ANSI::Terminal fails to detect Windows

eric-smartlove opened this issue · comments

I am on Windows XP.

When I type:

require "ansi"
ANSI::Terminal.terminal_width

I have the message: No such file or directory - stty size

In https://github.com/rubyworks/ansi/blob/master/lib/ansi/terminal.rb, the code seems to require successively ansi/terminal/stty, ansi/terminal/curses, ansi/terminal/termios and ansi/terminal/win32 until one of these require does not raises.

I guess that stty is supposed to raise on Windows, to avoid using this library. However when I require manually ansi/terminal/stty, it does not raises.

In fact, when I read the code of ansi/terminal/stty I do not see anything that can raise on Windows (or on any platform).

commented

Bump!

No love for windows, anyone?

I have run into this issue on Windows as well, might take a stab at fixing it.

commented

I would love to merge a fix. I do not use Windows (for development) so it would be better for someone who does to take a stab at it.

commented

I may have fixed it. All this time and I think the simple error was pop should have been shift, i.e. the platforms files were being required in the wrong order.

require "ansi"
ANSI::Terminal.terminal_width # => 207

now works for me on Win7 under Cygwin. Is that a conclusive test?

commented

Pretty much. And if that works for straight Windows (no Cygwin) then I think this issue if finally close able. Yay! (Though I am sure improvements are to be had, e.g. I've seen code in the wild that indicate to me that JRuby support might need some love.)