irbtools 0.7.2 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +6 -1
- data/README.rdoc +1 -3
- data/Rakefile +0 -1
- data/VERSION +1 -1
- data/irbtools.gemspec +5 -2
- data/lib/irbtools.rb +21 -174
- data/lib/irbtools/configure.rb +58 -46
- data/lib/irbtools/general.rb +66 -0
- data/lib/irbtools/libraries.rb +94 -0
- data/lib/irbtools/workarounds.rb +62 -0
- metadata +7 -4
data/CHANGELOG
CHANGED
@@ -1,4 +1,9 @@
|
|
1
|
-
0.7.
|
1
|
+
0.7.3
|
2
|
+
* refactored file structure and added new Irbtools.add_lib method
|
3
|
+
* load railsrc if executed with rails and Irbtools.railsrc is set
|
4
|
+
* more little fixes
|
5
|
+
|
6
|
+
0.7.2
|
2
7
|
* fixed Rails 3 bug
|
3
8
|
* added boson gem (command repository)
|
4
9
|
* remember history when resetting or switching ruby version
|
data/README.rdoc
CHANGED
@@ -23,11 +23,9 @@ If it does not exist, just create a new one.
|
|
23
23
|
It's possible to modify, which libraries get loaded:
|
24
24
|
|
25
25
|
require 'irbtools/configure'
|
26
|
-
# here you can edit the Irbtools.libs array
|
26
|
+
# here you can edit the <tt>Irbtools.libs</tt> array or add libraries inclusive load callbacks with <tt>Irbtools.add_library</tt>
|
27
27
|
Irbtools.init
|
28
28
|
|
29
|
-
You could also just read and copy the irbtools/configure.rb and irbtools.rb source files, tweak them and use them directly as <tt>.irbrc</tt> ;)
|
30
|
-
|
31
29
|
== Features
|
32
30
|
|
33
31
|
See http://rbjl.net/40-irbtools-release-the-power-of-irb or read the commented source file: lib/irbtools.rb
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.7.
|
1
|
+
0.7.3
|
data/irbtools.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{irbtools}
|
8
|
-
s.version = "0.7.
|
8
|
+
s.version = "0.7.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Jan Lelis"]
|
12
|
-
s.date = %q{2010-10-
|
12
|
+
s.date = %q{2010-10-08}
|
13
13
|
s.description = %q{irbtools is a meta gem which installs some useful irb gems and configures your irb. Simply put a require 'irbtools' in the .irbrc file in your home directory.}
|
14
14
|
s.email = %q{mail@janlelis.de}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -27,6 +27,9 @@ Gem::Specification.new do |s|
|
|
27
27
|
"irbtools.gemspec",
|
28
28
|
"lib/irbtools.rb",
|
29
29
|
"lib/irbtools/configure.rb",
|
30
|
+
"lib/irbtools/general.rb",
|
31
|
+
"lib/irbtools/libraries.rb",
|
32
|
+
"lib/irbtools/workarounds.rb",
|
30
33
|
"screenshots/examples1.png",
|
31
34
|
"screenshots/examples2.png"
|
32
35
|
]
|
data/lib/irbtools.rb
CHANGED
@@ -8,69 +8,14 @@ require File.expand_path('irbtools/configure', File.dirname(__FILE__) )
|
|
8
8
|
|
9
9
|
# # # # #
|
10
10
|
# load libraries
|
11
|
-
|
11
|
+
remember_verbose_and_debug = $VERBOSE, $DEBUG
|
12
|
+
$VERBOSE = $DEBUG = false
|
13
|
+
|
14
|
+
Irbtools.libraries.each{ |lib|
|
12
15
|
begin
|
13
|
-
require lib
|
14
|
-
case lib
|
15
|
-
|
16
|
-
when 'wirble'
|
17
|
-
Wirble.init
|
18
|
-
Wirble.colorize unless OS.windows?
|
19
|
-
|
20
|
-
when 'hirb'
|
21
|
-
Hirb::View.enable
|
22
|
-
|
23
|
-
when 'fileutils'
|
24
|
-
include FileUtils::Verbose
|
25
|
-
|
26
|
-
# patch cd so that it also shows the current directory
|
27
|
-
def cd(path = '/', *args)
|
28
|
-
FileUtils::Verbose.cd path, *args
|
29
|
-
ls
|
30
|
-
end
|
31
|
-
|
32
|
-
when 'clipboard'
|
33
|
-
# copies the clipboard
|
34
|
-
def copy(str)
|
35
|
-
Clipboard.copy(str)
|
36
|
-
end
|
37
|
-
|
38
|
-
# pastes the clipboard
|
39
|
-
def paste
|
40
|
-
Clipboard.paste
|
41
|
-
end
|
42
|
-
|
43
|
-
# copies everything you have entered in this irb session
|
44
|
-
def copy_input
|
45
|
-
copy session_history
|
46
|
-
"The session input history has been copied to the clipboard."
|
47
|
-
end
|
48
|
-
alias copy_session_input copy_input
|
49
|
-
|
50
|
-
# copies the output of all irb commands in this irb session
|
51
|
-
def copy_output
|
52
|
-
copy context.instance_variable_get(:@eval_history_values).inspect.gsub(/^\d+ (.*)/, '\1')
|
53
|
-
"The session output history has been copied to the clipboard."
|
54
|
-
end
|
55
|
-
alias copy_session_output copy_output
|
56
|
-
|
57
|
-
|
58
|
-
when 'coderay'
|
59
|
-
# syntax highlight a string
|
60
|
-
def colorize(string)
|
61
|
-
puts CodeRay.scan( string, :ruby ).term
|
62
|
-
end
|
63
|
-
|
64
|
-
# syntax highlight a file
|
65
|
-
def ray(path)
|
66
|
-
puts CodeRay.scan( File.read(path), :ruby ).term
|
67
|
-
end
|
68
|
-
|
69
|
-
when 'boson'
|
70
|
-
undef :install if respond_to?( :install, true )
|
71
|
-
Boson.start :verbose => false
|
16
|
+
require lib.to_s
|
72
17
|
|
73
|
-
|
18
|
+
Irbtools.send :library_loaded, lib
|
74
19
|
|
75
20
|
rescue LoadError => err
|
76
21
|
if err.to_s =~ /irb_rocket/ && RubyEngine.mri?
|
@@ -82,76 +27,11 @@ You can install it with: gem install irb_rocket --source http://merbi.st"
|
|
82
27
|
end
|
83
28
|
}
|
84
29
|
|
30
|
+
$VERBOSE, $DEBUG = remember_verbose_and_debug
|
31
|
+
|
85
32
|
# # # # #
|
86
33
|
# general shortcuts & helper methods
|
87
|
-
|
88
|
-
# shows the contents of your current directory (more such commands available by FileUtils)
|
89
|
-
def ls(path='.')
|
90
|
-
Dir[ File.join( path, '*' )].map{|res| res =~ /^#{path}\/?/; $' }
|
91
|
-
end
|
92
|
-
alias dir ls
|
93
|
-
|
94
|
-
# read file contents (also see ray for ruby source files ;) )
|
95
|
-
def cat(path)
|
96
|
-
File.read path
|
97
|
-
end
|
98
|
-
|
99
|
-
# allows concise syntax like rq:mathn
|
100
|
-
def rq(lib)
|
101
|
-
require lib.to_s
|
102
|
-
end
|
103
|
-
|
104
|
-
# returns the last lines, needed for some copy_ methods
|
105
|
-
def session_history(number_of_lines = context.instance_variable_get(:@line_no) )
|
106
|
-
Readline::HISTORY.entries[-number_of_lines...-1]*"\n"
|
107
|
-
end
|
108
|
-
|
109
|
-
# restart irb
|
110
|
-
def reset!
|
111
|
-
at_exit { exec$0 } # remember history
|
112
|
-
exit
|
113
|
-
end
|
114
|
-
|
115
|
-
def ruby_version(which = nil)
|
116
|
-
# test if installed
|
117
|
-
unless `rvm -v` =~ /Seguin/
|
118
|
-
raise 'Ruby Version Manager must be installed to use this command'
|
119
|
-
end
|
120
|
-
|
121
|
-
# show rubies if called without options
|
122
|
-
if !which
|
123
|
-
puts 'Availabe Rubies: ' +
|
124
|
-
`rvm list`.scan( /^(?: |=>) (.*) \[/ )*", "
|
125
|
-
return
|
126
|
-
end
|
127
|
-
|
128
|
-
# get irb suffix
|
129
|
-
rv = `rvm use #{which}` # e.g. => "\ninfo: Using ruby 1.9.2 p0\n"
|
130
|
-
# it does not change the ruby for the current user
|
131
|
-
rv =~ /^.*Using(.*)\n/
|
132
|
-
|
133
|
-
# if ruby is found, start it
|
134
|
-
if $1
|
135
|
-
ruby_name = File.split( $1 )[-1].tr(' ', '-')
|
136
|
-
irbname = $0 + '-' + ruby_name# + '@global'
|
137
|
-
at_exit { exec irbname } # remember history
|
138
|
-
exit
|
139
|
-
else
|
140
|
-
puts "Sorry, that Ruby version could not be found."
|
141
|
-
end
|
142
|
-
end
|
143
|
-
alias use ruby_version
|
144
|
-
|
145
|
-
# load debugger, inspired by rdp
|
146
|
-
def debuger
|
147
|
-
begin
|
148
|
-
require 'ruby-debug'
|
149
|
-
debugger
|
150
|
-
rescue LoadError => e
|
151
|
-
throw "Sorry, unable to load ruby-debug gem for debugger: #{e}"
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
34
|
+
require File.expand_path('irbtools/general', File.dirname(__FILE__) )
|
155
35
|
|
156
36
|
# # # # #
|
157
37
|
# irb options
|
@@ -173,54 +53,21 @@ IRB.conf[:PROMPT_MODE] = :IRBTOOLS
|
|
173
53
|
|
174
54
|
# # # # #
|
175
55
|
# misc
|
176
|
-
|
56
|
+
Object.const_set 'RV', RubyVersion rescue nil
|
57
|
+
Object.const_set 'RE', RubyEngine rescue nil
|
58
|
+
|
59
|
+
# # # # #
|
60
|
+
# load rails.rc
|
61
|
+
begin
|
62
|
+
if ( ENV['RAILS_ENV'] || defined? Rails ) && Irbtools.railsrc
|
63
|
+
load File.expand_path( Irbtools.railsrc )
|
64
|
+
end
|
65
|
+
rescue
|
66
|
+
end
|
177
67
|
|
178
68
|
# # # # #
|
179
69
|
# workarounds
|
180
|
-
|
181
|
-
# irb_rocket stdout problems
|
182
|
-
if IRB.const_defined? :CaptureIO
|
183
|
-
module IRB
|
184
|
-
class CaptureIO
|
185
|
-
def self.streams
|
186
|
-
{
|
187
|
-
:stdout => @@current_capture.instance_variable_get( :@out ),
|
188
|
-
:stderr => @@current_capture.instance_variable_get( :@err ),
|
189
|
-
}
|
190
|
-
end
|
191
|
-
|
192
|
-
alias original_capture capture
|
193
|
-
def capture(&block)
|
194
|
-
@@current_capture = self
|
195
|
-
original_capture &block
|
196
|
-
end
|
197
|
-
end
|
198
|
-
end
|
199
|
-
|
200
|
-
# patch method using stdout
|
201
|
-
module Kernel
|
202
|
-
alias exec_unpatched exec
|
203
|
-
def exec(*args)
|
204
|
-
STDOUT.reopen(IRB::CaptureIO.streams[:stdout])
|
205
|
-
STDERR.reopen(IRB::CaptureIO.streams[:stderr])
|
206
|
-
exec_unpatched *args
|
207
|
-
end
|
208
|
-
end
|
209
|
-
|
210
|
-
if Object.const_defined? :InteractiveEditor
|
211
|
-
InteractiveEditor::Editors.class_eval do
|
212
|
-
editors = %w[vi vim emacs nano mate ed]
|
213
|
-
editors.each{ |editor|
|
214
|
-
alias_for editor, editor_unpatched = ( editor + '_unpatched' ).to_sym
|
215
|
-
define_method editor do
|
216
|
-
STDOUT.reopen(IRB::CaptureIO.streams[:stdout])
|
217
|
-
STDERR.reopen(IRB::CaptureIO.streams[:stderr])
|
218
|
-
send editor_unpatched
|
219
|
-
end
|
220
|
-
}
|
221
|
-
end
|
222
|
-
end
|
223
|
-
end
|
70
|
+
require File.expand_path('irbtools/workarounds', File.dirname(__FILE__) )
|
224
71
|
|
225
72
|
# # # # #
|
226
73
|
# done :)
|
data/lib/irbtools/configure.rb
CHANGED
@@ -9,52 +9,64 @@ begin
|
|
9
9
|
require 'zucker/alias_for'
|
10
10
|
require 'zucker/env' # Info, OS, RubyVersion, RubyEngine
|
11
11
|
rescue LoadError
|
12
|
-
|
13
|
-
else
|
14
|
-
# suggested libraries
|
15
|
-
module Irbtools
|
16
|
-
@libs = ['rubygems',
|
17
|
-
'wirble', # colors
|
18
|
-
'hirb', # active record tables
|
19
|
-
'fileutils', # cd, pwd, ln_s, mv, rm, mkdir, touch ... ;)
|
20
|
-
'zucker/debug', # nice debug printing (q, o, c, .m, .d)
|
21
|
-
'ap', # nice debug printing (ap)
|
22
|
-
'yaml', # nice debug printing (y)
|
23
|
-
'g', # nice debug printing (g) - MacOS only :/
|
24
|
-
'clipboard', # easy clipboard access (copy & paste)
|
25
|
-
'guessmethod', # automatically correct typos (method_missing hook)
|
26
|
-
# 'drx', # nice tk object inspector (.see) [not included because it fails to install out of the box on lots of systems]
|
27
|
-
'interactive_editor', # lets you open vim (or your favourite editor), hack something, save it, and it's loaded in the current irb session
|
28
|
-
'coderay', # some nice colorful display ;)
|
29
|
-
'boson', # IRB commands repository (which also works for the shell!)
|
30
|
-
'irb_rocket', # put result as comment instead of a new line!
|
31
|
-
# 'zucker/all' # see rubyzucker.info
|
32
|
-
]
|
33
|
-
|
34
|
-
if OS.windows?
|
35
|
-
@libs -= %w[irb_rocket coderay]
|
36
|
-
end
|
37
|
-
|
38
|
-
unless OS.mac?
|
39
|
-
@libs -= %w[g]
|
40
|
-
end
|
41
|
-
|
42
|
-
if RubyVersion.is? 1.9
|
43
|
-
@libs -= %w[guessmethod]
|
44
|
-
end
|
45
|
-
|
46
|
-
class << self
|
47
|
-
def libs
|
48
|
-
@libs
|
49
|
-
end
|
50
|
-
aliases_for :libs, :gems, :libraries
|
51
|
-
|
52
|
-
def init
|
53
|
-
require File.expand_path( '../irbtools.rb', File.dirname(__FILE__) )
|
54
|
-
end
|
55
|
-
end
|
56
|
-
VERSION = File.read File.expand_path( '../../VERSION', File.dirname(__FILE__) )
|
57
|
-
end#module
|
12
|
+
raise "Sorry, the irbtools couldn't load, because the zucker gem is not available"
|
58
13
|
end
|
59
14
|
|
15
|
+
# # # # #
|
16
|
+
# define module methods
|
17
|
+
module Irbtools
|
18
|
+
@lib_hooks = Hash.new{|h,k| h[k] = [] }
|
19
|
+
@libs = %w[rubygems]
|
20
|
+
@railsrc = '~/.railsrc'
|
21
|
+
|
22
|
+
class << self
|
23
|
+
def libraries
|
24
|
+
@libs
|
25
|
+
end
|
26
|
+
aliases_for :libraries, :gems, :libs
|
27
|
+
|
28
|
+
def libraries=(value)
|
29
|
+
@libs = value
|
30
|
+
end
|
31
|
+
aliases_for :'libraries=', :'gems=', :'libs='
|
32
|
+
|
33
|
+
def add_library(lib, &block)
|
34
|
+
@libs << lib.to_s unless @libs.include? lib.to_s
|
35
|
+
@lib_hooks[lib.to_s] << block if block_given?
|
36
|
+
end
|
37
|
+
aliases_for :add_library, :add_lib, :add_gem
|
38
|
+
|
39
|
+
def remove_library(lib)
|
40
|
+
@libs.delete lib.to_s
|
41
|
+
@lib_hooks.delete lib.to_s
|
42
|
+
end
|
43
|
+
aliases_for :remove_library, :remove_lib, :remove_gem
|
44
|
+
|
45
|
+
def railsrc
|
46
|
+
@railsrc
|
47
|
+
end
|
48
|
+
|
49
|
+
def railsrc=(path)
|
50
|
+
@railsrc = path
|
51
|
+
end
|
52
|
+
|
53
|
+
def library_loaded(lib)
|
54
|
+
@lib_hooks[lib.to_s].each{ |hook| hook.call }
|
55
|
+
end
|
56
|
+
private :library_loaded
|
57
|
+
|
58
|
+
def init
|
59
|
+
require File.expand_path( '../irbtools.rb', File.dirname(__FILE__) )
|
60
|
+
end
|
61
|
+
alias start init
|
62
|
+
end
|
63
|
+
|
64
|
+
VERSION = File.read File.expand_path( '../../VERSION', File.dirname(__FILE__) )
|
65
|
+
end
|
66
|
+
|
67
|
+
# # # # #
|
68
|
+
# libraries
|
69
|
+
require File.expand_path( 'libraries.rb', File.dirname(__FILE__) )
|
70
|
+
|
60
71
|
# J-_-L
|
72
|
+
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# shows the contents of your current directory (more such commands available by FileUtils)
|
2
|
+
def ls(path='.')
|
3
|
+
Dir[ File.join( path, '*' )].map{|res| res =~ /^#{path}\/?/; $' }
|
4
|
+
end
|
5
|
+
alias dir ls
|
6
|
+
|
7
|
+
# read file contents (also see ray for ruby source files ;) )
|
8
|
+
def cat(path)
|
9
|
+
File.read path
|
10
|
+
end
|
11
|
+
|
12
|
+
# allows concise syntax like rq:mathn
|
13
|
+
def rq(lib)
|
14
|
+
require lib.to_s
|
15
|
+
end
|
16
|
+
|
17
|
+
# returns the last lines, needed for some copy_ methods
|
18
|
+
def session_history(number_of_lines = context.instance_variable_get(:@line_no) )
|
19
|
+
Readline::HISTORY.entries[-number_of_lines...-1]*"\n"
|
20
|
+
end
|
21
|
+
|
22
|
+
# restart irb
|
23
|
+
def reset!
|
24
|
+
at_exit { exec$0 } # remember history
|
25
|
+
exit
|
26
|
+
end
|
27
|
+
|
28
|
+
def ruby_version(which = nil)
|
29
|
+
# test if installed
|
30
|
+
unless `rvm -v` =~ /Seguin/
|
31
|
+
raise 'Ruby Version Manager must be installed to use this command'
|
32
|
+
end
|
33
|
+
|
34
|
+
# show rubies if called without options
|
35
|
+
if !which
|
36
|
+
puts 'Availabe Rubies: ' +
|
37
|
+
`rvm list`.scan( /^(?: |=>) (.*) \[/ )*", "
|
38
|
+
return
|
39
|
+
end
|
40
|
+
|
41
|
+
# get irb suffix
|
42
|
+
rv = `rvm use #{which}` # e.g. => "\ninfo: Using ruby 1.9.2 p0\n"
|
43
|
+
# it does not change the ruby for the current user
|
44
|
+
rv =~ /^.*Using(.*)\n/
|
45
|
+
|
46
|
+
# if ruby is found, start it
|
47
|
+
if $1
|
48
|
+
ruby_name = File.split( $1 )[-1].tr(' ', '-')
|
49
|
+
irbname = $0 + '-' + ruby_name# + '@global'
|
50
|
+
at_exit { exec irbname } # remember history
|
51
|
+
exit
|
52
|
+
else
|
53
|
+
puts "Sorry, that Ruby version could not be found."
|
54
|
+
end
|
55
|
+
end
|
56
|
+
alias use ruby_version
|
57
|
+
|
58
|
+
# load debugger, inspired by rdp
|
59
|
+
def dbg
|
60
|
+
begin
|
61
|
+
require 'ruby-debug'
|
62
|
+
debugger
|
63
|
+
rescue LoadError => e
|
64
|
+
throw "Sorry, unable to load ruby-debug gem for debugger: #{e}"
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
# # # # #
|
4
|
+
# require 'irbtools' in your .irbrc
|
5
|
+
# but you could also require 'irbtools/configure' and then call Irbtools.init to modify the loaded libraries
|
6
|
+
# see the README file for more information
|
7
|
+
|
8
|
+
Irbtools.add_library :wirble do # colors
|
9
|
+
Wirble.init
|
10
|
+
Wirble.colorize unless OS.windows?
|
11
|
+
end
|
12
|
+
|
13
|
+
Irbtools.add_library :hirb do # active record tables
|
14
|
+
Hirb::View.enable
|
15
|
+
end
|
16
|
+
|
17
|
+
Irbtools.add_library :fileutils do # cd, pwd, ln_s, mv, rm, mkdir, touch ... ;)
|
18
|
+
include FileUtils::Verbose
|
19
|
+
|
20
|
+
# patch cd so that it also shows the current directory
|
21
|
+
def cd(path = '/', *args)
|
22
|
+
FileUtils::Verbose.cd path, *args
|
23
|
+
ls
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
Irbtools.add_library :coderay do
|
29
|
+
# syntax highlight a string
|
30
|
+
def colorize(string)
|
31
|
+
puts CodeRay.scan( string, :ruby ).term
|
32
|
+
end
|
33
|
+
|
34
|
+
# syntax highlight a file
|
35
|
+
def ray(path)
|
36
|
+
puts CodeRay.scan( File.read(path), :ruby ).term
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
Irbtools.add_library :clipboard do # access the clipboard
|
41
|
+
# copies the clipboard
|
42
|
+
def copy(str)
|
43
|
+
Clipboard.copy(str)
|
44
|
+
end
|
45
|
+
|
46
|
+
# pastes the clipboard
|
47
|
+
def paste
|
48
|
+
Clipboard.paste
|
49
|
+
end
|
50
|
+
|
51
|
+
# copies everything you have entered in this irb session
|
52
|
+
def copy_input
|
53
|
+
copy session_history
|
54
|
+
"The session input history has been copied to the clipboard."
|
55
|
+
end
|
56
|
+
alias copy_session_input copy_input
|
57
|
+
|
58
|
+
# copies the output of all irb commands in this irb session
|
59
|
+
def copy_output
|
60
|
+
copy context.instance_variable_get(:@eval_history_values).inspect.gsub(/^\d+ (.*)/, '\1')
|
61
|
+
"The session output history has been copied to the clipboard."
|
62
|
+
end
|
63
|
+
alias copy_session_output copy_output
|
64
|
+
end
|
65
|
+
|
66
|
+
Irbtools.add_library 'zucker/debug' # nice debug printing (q, o, c, .m, .d)
|
67
|
+
Irbtools.add_library 'ap' # nice debug printing (ap)
|
68
|
+
Irbtools.add_library 'yaml' # nice debug printing (y)
|
69
|
+
Irbtools.add_library 'g' # nice debug printing (g) - MacOS only :/
|
70
|
+
Irbtools.add_library 'guessmethod' # automatically correct typos (method_missing hook)
|
71
|
+
Irbtools.add_library 'interactive_editor' # lets you open vim (or your favourite editor), hack something, save it, and it's loaded in the current irb session
|
72
|
+
Irbtools.add_library 'irb_rocket' # put result as comment instead of a new line!
|
73
|
+
#Irbtools.add_library 'zucker/all' # see rubyzucker.info
|
74
|
+
|
75
|
+
Irbtools.add_library :boson do
|
76
|
+
undef :install if respond_to?( :install, true )
|
77
|
+
Boson.start :verbose => false
|
78
|
+
end
|
79
|
+
|
80
|
+
# remove failing/not needed libs
|
81
|
+
if OS.windows?
|
82
|
+
Irbtools.libraries -= %w[irb_rocket coderay]
|
83
|
+
end
|
84
|
+
|
85
|
+
unless OS.mac?
|
86
|
+
Irbtools.libraries -= %w[g]
|
87
|
+
end
|
88
|
+
|
89
|
+
if RubyVersion.is? 1.9
|
90
|
+
Irbtools.libraries -= %w[guessmethod]
|
91
|
+
end
|
92
|
+
|
93
|
+
# J-_-L
|
94
|
+
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
# # # # #
|
4
|
+
# require 'irbtools' in your .irbrc
|
5
|
+
# but you could also require 'irbtools/configure' and then call Irbtools.init to modify the loaded libraries
|
6
|
+
# see the README file for more information
|
7
|
+
|
8
|
+
# irb_rocket stdout problems
|
9
|
+
if IRB.const_defined? :CaptureIO
|
10
|
+
module IRB
|
11
|
+
class CaptureIO
|
12
|
+
def self.streams
|
13
|
+
{
|
14
|
+
:stdout => @@current_capture.instance_variable_get( :@out ),
|
15
|
+
:stderr => @@current_capture.instance_variable_get( :@err ),
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
alias original_capture capture
|
20
|
+
def capture(&block)
|
21
|
+
@@current_capture = self
|
22
|
+
original_capture &block
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# patch methods using stdout
|
28
|
+
module Kernel
|
29
|
+
private
|
30
|
+
|
31
|
+
alias exec_unpatched exec
|
32
|
+
def exec(*args)
|
33
|
+
STDOUT.reopen(IRB::CaptureIO.streams[:stdout])
|
34
|
+
STDERR.reopen(IRB::CaptureIO.streams[:stderr])
|
35
|
+
exec_unpatched *args
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
alias dbg_unpatched dbg
|
40
|
+
def dbg
|
41
|
+
STDOUT.reopen(IRB::CaptureIO.streams[:stdout])
|
42
|
+
STDERR.reopen(IRB::CaptureIO.streams[:stderr])
|
43
|
+
dbg_unpatched
|
44
|
+
end
|
45
|
+
|
46
|
+
if Object.const_defined? :InteractiveEditor
|
47
|
+
InteractiveEditor::Editors.class_eval do
|
48
|
+
editors = %w[vi vim emacs nano mate ed]
|
49
|
+
editors.each{ |editor|
|
50
|
+
alias_for editor, editor_unpatched = ( editor + '_unpatched' ).to_sym
|
51
|
+
define_method editor do
|
52
|
+
STDOUT.reopen(IRB::CaptureIO.streams[:stdout])
|
53
|
+
STDERR.reopen(IRB::CaptureIO.streams[:stderr])
|
54
|
+
send editor_unpatched
|
55
|
+
end
|
56
|
+
}
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
# J-_-L
|
62
|
+
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: irbtools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 5
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 7
|
9
|
-
-
|
10
|
-
version: 0.7.
|
9
|
+
- 3
|
10
|
+
version: 0.7.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jan Lelis
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-10-
|
18
|
+
date: 2010-10-08 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -178,6 +178,9 @@ files:
|
|
178
178
|
- irbtools.gemspec
|
179
179
|
- lib/irbtools.rb
|
180
180
|
- lib/irbtools/configure.rb
|
181
|
+
- lib/irbtools/general.rb
|
182
|
+
- lib/irbtools/libraries.rb
|
183
|
+
- lib/irbtools/workarounds.rb
|
181
184
|
- screenshots/examples1.png
|
182
185
|
- screenshots/examples2.png
|
183
186
|
has_rdoc: true
|