Tassio Virginio
28 posts
|
Pessoal ai vai uma dica pra quem usa o Linux,
como deixar o IRB colorido, vamos lá…
1° executa esse comando:
$ sudo gem install wirble
2° Editar o arquivo irbrc e adiciona o seguinte codigo:
require ‘rubygems’
require ‘wirble’
Wirble.init
Wirble.colorize
OBS: Lembrando de Colocar os requires que já tiver na pagina juntos…
Pronto… seu IRB esta em cores!
Abraço a todos !
origem
|
Vinícius Teles
27 posts
|
Excelente dica. Já configurei o meu. Ficou muito legal. :-)
A propósito, a solução vale para Mac OS também. Funcionou direitinho no meu.
|
Davis Zanett...
128 posts
|
Só um detalhe: se tu não tiver o arquivo ~/.irbrc, pode criar e jogar:
Que funciona! :-)
|
Marcos Ricardo
29 posts
|
Aeh PessoAll,
Tô tentando usar o Wirble no Windows e não tive sucesso…
Primeiro faltou uma dica de como criar o arquivo de configuração no Windows.
Depois de alguma pesquisa, descobri a seguinte dica:
Crie um arquivo com o nome que você quiser (o mais óbvio é: irb.rc), e coloque-o também onde você quiser (novamente, o mais óbvio é na pasta em que instalou o Ruby, no meu caso: D:\Ruby).
Associe o caminho completo onde está localizado o arquivo de configuração (no meu caso: D:\Ruby\irb.rc) à váriável de ambiente IRBRC.
Segundo o pessoal que deu a dica: www.drnicwilliams.com/2006/10/12/my-irbrc-for-consoleirb/
seria só isso, mas tô recebendo um erro:
D:\Ruby\lib\ruby>irb
load error: D:\Ruby\\irb.rc
ArgumentError: couldn’t find HOME environment — expanding `~/.irb_history’
d:/Ruby/lib/ruby/gems/1.8/gems/wirble-0.1.2/./wirble.rb:94:in `expand_pa
th’
d:/Ruby/lib/ruby/gems/1.8/gems/wirble-0.1.2/./wirble.rb:94:in `load_hist
ory’
d:/Ruby/lib/ruby/gems/1.8/gems/wirble-0.1.2/./wirble.rb:112:in `initiali
ze’
d:/Ruby/lib/ruby/gems/1.8/gems/wirble-0.1.2/./wirble.rb:505:in `new’
d:/Ruby/lib/ruby/gems/1.8/gems/wirble-0.1.2/./wirble.rb:505:in `init’
D:\Ruby\\irb.rc:3
d:/Ruby/lib/ruby/1.8/irb/init.rb:207:in `load’
d:/Ruby/lib/ruby/1.8/irb/init.rb:207:in `run_config’
d:/Ruby/lib/ruby/1.8/irb/init.rb:20:in `setup’
>> exit
D:\Ruby\lib\ruby>
Alguma idéia ?
|
Neves
162 posts
|
Marcos, eu também tive este problema. Abra o irb.bat, que está na pasta bin do ruby, e troque tudo pelo código abaixo:
REM aqui define onde será salvo o histórico
SET IRB_HISTORY_FILE=TMP\history.irb
goto endofruby
#!/bin/ruby
#
- irb.rb – intaractive ruby
- $Release Version: 0.9.5 $
- $Revision: 1.2.2.1 $
- $Date: 2005/04/19 19:24:56 $
- by Keiju ISHITSUKA
#
require ‘rubygems’
require “irb”
require ‘wirble’
Wirble.init
- cores infelizmente não são suportadas pelo MS-DOS
Wirble.colorize unless Config::CONFIG‘host_os’ == ‘mswin32’
if FILE == $0
IRB.start(__FILE__)
else
# check -e option
if /^-e$/ =~ $0
IRB.start(__FILE__)
else
IRB.setup(__FILE__)
end
end
END
:endofruby
“~d0~p0ruby” -x “%~f0” %*
Agora alguém sabe como fazer o dos entender colorido? Será que tem como usando Cygwin para windows?
Fora a sintaxe colorida que não funciona no DOS, qual outro recurso o Wirble tem?
|
Celestino Gomes
7 posts
|
Marcos,
O que está ocorrendo é que não existe a variável de ambiente HOME. Isso também acontece quando se tenta usar o autotest da ZenTest.
Basta apontar para a pasta de usuário do SO.
set HOME=c:\documents and settings\user_name (Win 98/XP)
set HOME=C:\Users\user_name (Vista)
Mas no Windows Vista não funcionou :(
Abraços!
|
Marcos Ricardo
29 posts
|
Oi PessoAll
Estou completamente sem tempo para investir mais nesta tarefa, mas se alguém quiser se aventurar, segue o que eu descobri.
Parece que o Windows não consegue fazer o que é necessário apenas com os caracteres ESCAPE.
O Shin Guey, pesquisou mais que eu e descobriu 2 APIs para fazer o serviço.
Neste post: http://www.megasolutions.net/ruby/How-to-coloring-Windows-command-prompt-in-irb_-26009.aspx
Ele mostra uma delas, com a qual fiz este teste:
module Test
module Color
COLORS = {
:nothing => ‘0;0’,
:black => ‘0;30’,
:red => ‘0;31’,
:green => ‘0;32’,
:brown => ‘0;33’,
:blue => ‘0;34’,
:cyan => ‘0;36’,
:purple => ‘0;35’,
:light_gray => ‘0;37’,
:dark_gray => ‘1;30’,
:light_red => ‘1;31’,
:light_green => ‘1;32’,
:yellow => ‘1;33’,
:light_blue => ‘1;34’,
:light_cyan => ‘1;36’,
:light_purple => ‘1;35’,
:white => ‘1;37’,
}
#
# Return the escape code for a given color.
#
def self.escape(key)
COLORS.key?(key) && “\033[#{COLORS[key]}m”
end
end
#
# Default Wirble color scheme.
#
DEFAULT_COLORS = {
# delimiter colors
:comma => :blue,
:refers => :blue,
# container colors (hash and array)
:open_hash => :green,
:close_hash => :green,
:open_array => :green,
:close_array => :green,
# object colors
:open_object => :light_red,
:object_class => :white,
:object_addr_prefix => :blue,
:object_line_prefix => :blue,
:close_object => :light_red,
# symbol colors
:symbol => :yellow,
:symbol_prefix => :yellow,
# string colors
:open_string => :red,
:string => :cyan,
:close_string => :red,
# misc colors
:number => :cyan,
:keyword => :green,
:class => :light_green,
:range => :red,
}
#
# Fruity testing colors.
#
TESTING_COLORS = {
:comma => :red,
:refers => :red,
:open_hash => :blue,
:close_hash => :blue,
:open_array => :green,
:close_array => :green,
:open_object => :light_red,
:object_class => :light_green,
:object_addr => :purple,
:object_line => :light_purple,
:close_object => :light_red,
:symbol => :yellow,
:symbol_prefix => :yellow,
:number => :cyan,
:string => :cyan,
:keyword => :white,
:range => :light_blue,
}
#
# Set color map to hash
#
def self.colors=(hash)
@colors = hash
end
#
# Get current color map
#
def self.colors
@colors ||= {}.update(DEFAULT_COLORS)
end
#
# Return a string with the given color.
#
def self.colorize_string(str, color)
get_std_handle = Win32API.new(“kernel32”, “GetStdHandle”, ‘L’, ’L’)
set_console_txt_attrb =
Win32API.new(“kernel32”,“SetConsoleTextAttribute”,
‘L’,‘N’, ’I’)
hout = get_std_handle.call(-11)
set_console_txt_attrb.call(hout,9)
p ‘teste de cores’
set_console_txt_attrb.call(hout,7)
col, nocol = [color, :nothing].map { |key| Color.escape(key) }
col ? “#{col}#{str}#{nocol}” : str
end
end
puts ‘aqui ’ + Test.colorize_string(’:teste’,:light_green).to_s
Usando como base o código do próprio Wirble.
A outra API é a WinConsole aqui:
http://rubyforge.org/projects/winconsole
Se alguém puder investir algum tempo, parece ser apenas uma questão de colocar uns IFs se for ambiente Windows e modificar a lógica para usar uma das APIs citadas.
Grande abraço.
|