utils 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. data/Rakefile +68 -0
  2. data/VERSION +1 -0
  3. data/bin/chroot-exec +12 -0
  4. data/bin/chroot-libs +18 -0
  5. data/bin/classify +37 -0
  6. data/bin/discover +137 -0
  7. data/bin/edit +74 -0
  8. data/bin/errf +32 -0
  9. data/bin/git-empty +8 -0
  10. data/bin/myex +90 -0
  11. data/bin/number_files +26 -0
  12. data/bin/same_files +37 -0
  13. data/bin/search +205 -0
  14. data/bin/sedit +3 -0
  15. data/bin/sshscreen +68 -0
  16. data/bin/term +21 -0
  17. data/bin/unquarantine_apps +8 -0
  18. data/bin/untest +17 -0
  19. data/bin/utils-install-config +10 -0
  20. data/bin/vacuum_firefox_sqlite +22 -0
  21. data/bin/xmp +74 -0
  22. data/lib/utils.rb +8 -0
  23. data/lib/utils/config.rb +23 -0
  24. data/lib/utils/config/gdb/asm +179 -0
  25. data/lib/utils/config/gdb/ruby +528 -0
  26. data/lib/utils/config/gdbinit +8 -0
  27. data/lib/utils/config/irbrc +455 -0
  28. data/lib/utils/config/rdebugrc +2 -0
  29. data/lib/utils/config/screenrc +143 -0
  30. data/lib/utils/config/vim/autoload/Align.vim +1029 -0
  31. data/lib/utils/config/vim/autoload/AlignMaps.vim +330 -0
  32. data/lib/utils/config/vim/autoload/rails.vim +4744 -0
  33. data/lib/utils/config/vim/autoload/rubycomplete.vim +801 -0
  34. data/lib/utils/config/vim/autoload/sqlcomplete.vim +741 -0
  35. data/lib/utils/config/vim/autoload/vimball.vim +750 -0
  36. data/lib/utils/config/vim/colors/flori.vim +113 -0
  37. data/lib/utils/config/vim/compiler/eruby.vim +40 -0
  38. data/lib/utils/config/vim/compiler/ruby.vim +67 -0
  39. data/lib/utils/config/vim/compiler/rubyunit.vim +34 -0
  40. data/lib/utils/config/vim/ftdetect/ragel.vim +2 -0
  41. data/lib/utils/config/vim/ftdetect/ruby.vim +17 -0
  42. data/lib/utils/config/vim/ftplugin/eruby.vim +100 -0
  43. data/lib/utils/config/vim/ftplugin/ruby.vim +260 -0
  44. data/lib/utils/config/vim/ftplugin/xml.vim +941 -0
  45. data/lib/utils/config/vim/indent/IndentAnything_html.vim +35 -0
  46. data/lib/utils/config/vim/indent/eruby.vim +77 -0
  47. data/lib/utils/config/vim/indent/javascript.vim +116 -0
  48. data/lib/utils/config/vim/indent/ruby.vim +377 -0
  49. data/lib/utils/config/vim/plugin/AlignMapsPlugin.vim +242 -0
  50. data/lib/utils/config/vim/plugin/AlignPlugin.vim +41 -0
  51. data/lib/utils/config/vim/plugin/Decho.vim +592 -0
  52. data/lib/utils/config/vim/plugin/IndentAnything.vim +675 -0
  53. data/lib/utils/config/vim/plugin/bufexplorer.vim +1144 -0
  54. data/lib/utils/config/vim/plugin/cecutil.vim +482 -0
  55. data/lib/utils/config/vim/plugin/fugitive.vim +1703 -0
  56. data/lib/utils/config/vim/plugin/lusty-explorer.vim +1509 -0
  57. data/lib/utils/config/vim/plugin/rails.vim +340 -0
  58. data/lib/utils/config/vim/plugin/rubyextra.vim +193 -0
  59. data/lib/utils/config/vim/plugin/surround.vim +628 -0
  60. data/lib/utils/config/vim/plugin/taglist.vim +4546 -0
  61. data/lib/utils/config/vim/plugin/test/IndentAnything/test.js +131 -0
  62. data/lib/utils/config/vim/plugin/vimballPlugin.vim +40 -0
  63. data/lib/utils/config/vim/syntax/Decho.vim +101 -0
  64. data/lib/utils/config/vim/syntax/eruby.vim +73 -0
  65. data/lib/utils/config/vim/syntax/javascript.vim +246 -0
  66. data/lib/utils/config/vim/syntax/ragel.vim +165 -0
  67. data/lib/utils/config/vim/syntax/ruby.vim +367 -0
  68. data/lib/utils/config/vimrc +461 -0
  69. data/lib/utils/file.rb +49 -0
  70. data/lib/utils/find.rb +54 -0
  71. data/lib/utils/md5.rb +23 -0
  72. data/lib/utils/patterns.rb +34 -0
  73. data/lib/utils/version.rb +8 -0
  74. data/utils.gemspec +33 -0
  75. metadata +183 -0
@@ -0,0 +1,8 @@
1
+ define session-ruby
2
+ source ~/.gdb/ruby
3
+ end
4
+ session-ruby
5
+
6
+ define session-asm
7
+ source ~/.gdb/asm
8
+ end
@@ -0,0 +1,455 @@
1
+ # vim: set filetype=ruby et sw=2 ts=2:
2
+
3
+ # Some libraries I just don't want to miss in my irb session.
4
+ require 'irb/completion'
5
+ require 'enumerator'
6
+ require 'pp'
7
+ require 'fileutils'
8
+ require 'find'
9
+ include FileUtils
10
+ begin
11
+ require 'ap'
12
+ rescue LoadError
13
+ end
14
+
15
+ $pager = ENV['PAGER'] || 'less -r'
16
+
17
+ class Symbol
18
+ def to_proc
19
+ Proc.new do |obj, *args|
20
+ obj.__send__(self, *args)
21
+ end
22
+ end unless method_defined?(:to_proc)
23
+ end
24
+
25
+ # Start _ri_ for +pattern+. If +pattern+ is not string like, call it with
26
+ # pattern.class.name as argument.
27
+ def ri(*patterns)
28
+ patterns.map! { |p| p.respond_to?(:to_str) ? p.to_str : p.class.name }
29
+ system "ri #{patterns.map { |p| "'#{p}'" } * ' '} | #{$pager}"
30
+ end
31
+
32
+ class Module
33
+ # Start +ri+ for +module#pattern+, trying to find a method matching +pattern+
34
+ # for all modules in the ancestors chain of this module.
35
+ def ri(pattern = nil)
36
+ if pattern
37
+ pattern = pattern.to_sym.to_s if pattern.respond_to? :to_sym
38
+ ancestors.each do |a|
39
+ if method = a.instance_methods(false).find { |m| pattern === m }
40
+ a = Object if a == Kernel # ri seems to be confused
41
+ system "ri #{a}##{method} | #{$pager}"
42
+ end
43
+ end
44
+ else
45
+ system "ri #{self} | #{$pager}"
46
+ end
47
+ return
48
+ end
49
+ end
50
+
51
+ # Restart this irb.
52
+ def irb_restart
53
+ exec $0
54
+ end
55
+
56
+ # Return all instance methods of obj's class.
57
+ def irb_all_class_instance_methods(obj)
58
+ methods = obj.class.instance_methods
59
+ irb_wrap_methods obj, methods
60
+ end
61
+
62
+ # Return instance methods of obj's class without the inherited/mixed in
63
+ # methods.
64
+ def irb_class_instance_methods(obj)
65
+ methods = obj.class.instance_methods(false)
66
+ irb_wrap_methods obj, methods
67
+ end
68
+
69
+ # Return all instance methods defined in module modul.
70
+ def irb_all_instance_methods(modul)
71
+ methods = modul.instance_methods
72
+ irb_wrap_methods modul, methods, true
73
+ end
74
+
75
+ # Return instance methods defined in module modul without the inherited/mixed
76
+ # in methods.
77
+ def irb_instance_methods(modul)
78
+ methods = modul.instance_methods(false)
79
+ irb_wrap_methods modul, methods, true
80
+ end
81
+
82
+ # Return all methods of obj (including obj's eigenmethods.)
83
+ def irb_all_methods(obj)
84
+ methods = obj.methods
85
+ irb_wrap_methods obj, methods
86
+ end
87
+
88
+ # Return instance methods of obj's class without the inherited/mixed in
89
+ # methods, but including obj's eigenmethods.
90
+ def irb_methods(obj)
91
+ methods = obj.class.ancestors[1..-1].inject(obj.methods) do |all, a|
92
+ all -= a.instance_methods
93
+ end
94
+ irb_wrap_methods obj, methods
95
+ end
96
+
97
+ # Return all eigen methods of obj.
98
+ def irb_eigen_methods(obj)
99
+ irb_wrap_methods obj, obj.methods(false)
100
+ end
101
+
102
+ def irb_wrap_methods(obj, methods, modul = false)
103
+ methods.map do |name|
104
+ MethodWrapper.new(obj, name, modul)
105
+ end.sort!
106
+ end
107
+
108
+ class WrapperBase
109
+ include Comparable
110
+
111
+ def initialize(name)
112
+ @name =
113
+ case
114
+ when name.respond_to?(:to_str)
115
+ name.to_str
116
+ when name.respond_to?(:to_sym)
117
+ name.to_sym.to_s
118
+ else
119
+ name.to_s
120
+ end
121
+ end
122
+
123
+ attr_reader :name
124
+
125
+ attr_reader :description
126
+
127
+ alias to_str name
128
+
129
+ alias inspect description
130
+
131
+ alias to_s description
132
+
133
+ def ==(name)
134
+ @name = name
135
+ end
136
+
137
+ alias eql? ==
138
+
139
+ def hash
140
+ @name.hash
141
+ end
142
+
143
+ def <=>(other)
144
+ @name <=> other.name
145
+ end
146
+ end
147
+
148
+ class MethodWrapper < WrapperBase
149
+ def initialize(obj, name, modul)
150
+ super(name)
151
+ if modul
152
+ @arity = obj.instance_method(name).arity
153
+ else
154
+ @arity = obj.method(name).arity
155
+ end
156
+ @description = "#@name(#@arity)"
157
+ end
158
+
159
+ attr_reader :arity
160
+ end
161
+
162
+ class ConstantWrapper < WrapperBase
163
+ def initialize(obj, name)
164
+ super(name)
165
+ @klass = obj.class
166
+ @description = "#@name:#@klass"
167
+ end
168
+
169
+ attr_reader :klass
170
+ end
171
+
172
+ # Return all the constants defined in +modul+.
173
+ def irb_constants(modul)
174
+ modul.constants.map { |c| ConstantWrapper.new(modul.const_get(c), c) }.sort
175
+ end
176
+
177
+ # Return all the subclasses of +klass+. TODO implement subclasses w/out rails
178
+ def irb_subclasses(klass)
179
+ klass.subclasses.map { |c| ConstantWrapper.new(eval(c), c) }.sort
180
+ end
181
+
182
+ unless Object.const_defined?(:Infinity)
183
+ Infinity = 1.0 / 0 # I like to define the infinite.
184
+ end
185
+
186
+ # Output all kinds of information about +obj+. If detailed is given output
187
+ # details about the methods (+ arity) in inheritance chain of +obj+ as well.
188
+ # * detailed as 0 output instance methods only of part 0 (the first) of the
189
+ # chain.
190
+ # * detailed as 1..2 output instance methods of +obj+ inherited from parts 1
191
+ # and 2 of the the chain.
192
+ def irb_info(obj, detailed = nil)
193
+ if Module === obj
194
+ modul = obj
195
+ klassp = Class === modul
196
+ if klassp
197
+ obj = modul.allocate
198
+ end
199
+ else
200
+ modul = obj.class
201
+ end
202
+ inspected = obj.inspect
203
+ puts "obj = #{inspected.size > 40 ? inspected[0, 40] + '...' : inspected} is of class #{obj.class}."
204
+ am = irb_all_methods(obj).size
205
+ ms = irb_methods(obj).size
206
+ ems = irb_eigen_methods(obj).size
207
+ puts "obj: #{am} methods, #{ms} only local#{ems > 0 ? " (#{ems} eigenmethods),": ','} #{am - ms} inherited/mixed in."
208
+ acim = irb_all_class_instance_methods(obj).size
209
+ cim = irb_class_instance_methods(obj).size
210
+ puts "obj: #{acim} instance methods, #{cim} local, #{acim - cim} only inherited/mixed in."
211
+ if klassp
212
+ s = modul.superclass
213
+ puts "Superclass of #{modul}: #{s}"
214
+ end
215
+ a = []
216
+ ec = true
217
+ begin
218
+ a << (class << obj; self; end)
219
+ rescue TypeError
220
+ ec = false
221
+ end
222
+ a.concat modul.ancestors
223
+ if ec
224
+ puts "Ancestors of #{modul}: (#{a[0]},) #{a[1..-1].map { |k| "#{k}#{k == s ? '*' : ''}" } * ', '}"
225
+ else
226
+ puts "Ancestors of #{modul}: #{a[0..-1].map { |k| "#{k}#{k == s ? '*' : ''}" } * ', '}"
227
+ end
228
+ if Class === modul and detailed
229
+ if detailed.respond_to? :to_int
230
+ detailed = detailed..detailed
231
+ end
232
+ detailed.each do |i|
233
+ break if i >= a.size
234
+ k = a[i]
235
+ puts "#{k}:"
236
+ puts irb_wrap_methods(obj, k.instance_methods(false)).sort
237
+ end
238
+ end
239
+ nil
240
+ end
241
+
242
+ # Output *all* the irb_info about +obj+. You may need to buy a bigger screen for
243
+ # this or use:
244
+ # less { irb_fullinfo object }
245
+ def irb_fullinfo(obj)
246
+ irb_info obj, 0..Infinity
247
+ end
248
+
249
+ def capture_output(with_stderr = false)
250
+ return "missing block" unless block_given?
251
+ require 'tempfile'
252
+ begin
253
+ old_stdout, $stdout = $stdout, Tempfile.new('irb')
254
+ if with_stderr
255
+ old_stderr, $stderr = $stderr, $stdout
256
+ end
257
+ yield
258
+ ensure
259
+ $stdout, temp = old_stdout, $stdout
260
+ with_stderr and $stderr = old_stderr
261
+ end
262
+ temp.rewind
263
+ temp.read
264
+ end
265
+
266
+ # Use pager on the output of the commands given in the block.
267
+ def less(with_stderr = false, &block)
268
+ IO.popen($pager, 'w') do |f|
269
+ f.write capture_output(with_stderr, &block)
270
+ f.close_write
271
+ end
272
+ nil
273
+ end
274
+
275
+ class String
276
+ # Pipe this string into +cmd+.
277
+ def |(cmd)
278
+ IO.popen(cmd, 'w+') do |f|
279
+ f.write self
280
+ f.close_write
281
+ return f.read
282
+ end
283
+ end
284
+
285
+ # Write this string into file +filename+.
286
+ def >>(filename)
287
+ irb_write(filename, self)
288
+ end
289
+ end
290
+
291
+ def irb_time
292
+ s = Time.now
293
+ yield
294
+ d = Time.now - s
295
+ warn "Took %.3fs seconds." % d
296
+ d
297
+ end
298
+
299
+ def irb_time_tap
300
+ r = nil
301
+ irb_time { r = yield }
302
+ r
303
+ end
304
+
305
+ def irb_time_watch(duration = 1)
306
+ start = Time.now
307
+ pre = nil
308
+ loop do
309
+ cur = [ yield ].flatten
310
+ unless pre
311
+ pre = cur.map(&:to_f)
312
+ cur = [ yield ].flatten
313
+ end
314
+ expired = Time.now - start
315
+ diffs = cur.zip(pre).map { |c, p| c - p }
316
+ rates = diffs.map { |d| d / duration }
317
+ warn "#{expired} #{cur.zip(rates, diffs).map(&:inspect) * ' '} # / per sec."
318
+ pre = cur.map(&:to_f)
319
+ sleep duration
320
+ end
321
+ end
322
+
323
+ def irb_write(filename, text = nil)
324
+ if block_given?
325
+ text = yield
326
+ else
327
+ text or raise "need a text as argument or as a block return value"
328
+ end
329
+ open(filename, 'wb') { |f| f.write text }
330
+ end
331
+
332
+ def irb_read(filename, chunk_size = 8_192)
333
+ if block_given?
334
+ File.open(filename) do |file|
335
+ until file.eof?
336
+ yield file.read(chunk_size)
337
+ end
338
+ end
339
+ else
340
+ IO.read filename
341
+ end
342
+ end
343
+
344
+ def irb_load_each(*files)
345
+ files = files.map { |f| f.gsub(/(\.rb)?\Z/, '.rb') }
346
+ for file in files
347
+ Find.find('.') do |f|
348
+ if file == File.basename(f)
349
+ load f
350
+ STDERR.puts "Loaded '#{f}'."
351
+ end
352
+ end
353
+ end
354
+ nil
355
+ end
356
+
357
+ def irb_edit(*files)
358
+ system "edit #{files.map { |f| %{'#{f}'} } * ' '}"
359
+ end
360
+
361
+ class Regexp
362
+ # Show the match of this Regexp on the +string+.
363
+ def show_match(string)
364
+ string =~ self ? "#{$`}<<#{$&}>>#{$'}" : "no match"
365
+ end
366
+ end
367
+
368
+ if IRB.conf[:PROMPT]
369
+ IRB.conf[:PROMPT][:CUSTOM] = {
370
+ :PROMPT_I => ">> ",
371
+ :PROMPT_N => ">> ",
372
+ :PROMPT_S => "%l> ",
373
+ :PROMPT_C => "+> ",
374
+ :RETURN => " # => %s\n"
375
+ }
376
+ IRB.conf[:PROMPT_MODE] = :CUSTOM
377
+ end
378
+
379
+ module ::IRB
380
+ class Context
381
+ def init_save_history
382
+ unless (class<<@io;self;end).include?(HistorySavingAbility)
383
+ @io.extend(HistorySavingAbility)
384
+ end
385
+ end
386
+
387
+ def save_history
388
+ IRB.conf[:SAVE_HISTORY]
389
+ end
390
+
391
+ def save_history=(val)
392
+ IRB.conf[:SAVE_HISTORY] = val
393
+ if val
394
+ main_context = IRB.conf[:MAIN_CONTEXT]
395
+ main_context = self unless main_context
396
+ main_context.init_save_history
397
+ end
398
+ end
399
+
400
+ def history_file
401
+ IRB.conf[:HISTORY_FILE]
402
+ end
403
+
404
+ def history_file=(hist)
405
+ IRB.conf[:HISTORY_FILE] = hist
406
+ end
407
+ end
408
+
409
+ module HistorySavingAbility
410
+ include Readline
411
+
412
+ def HistorySavingAbility.create_finalizer
413
+ at_exit do
414
+ if num = IRB.conf[:SAVE_HISTORY] and (num = num.to_i) > 0
415
+ if hf = IRB.conf[:HISTORY_FILE]
416
+ file = File.expand_path(hf)
417
+ end
418
+ file = IRB.rc_file("_history") unless file
419
+ open(file, 'w' ) do |f|
420
+ hist = HISTORY.to_a
421
+ f.puts(hist[-num..-1] || hist)
422
+ end
423
+ end
424
+ end
425
+ end
426
+
427
+ def HistorySavingAbility.extended(obj)
428
+ HistorySavingAbility.create_finalizer
429
+ obj.load_history
430
+ obj
431
+ end
432
+
433
+ def load_history
434
+ hist = IRB.conf[:HISTORY_FILE]
435
+ hist = IRB.rc_file("_history") unless hist
436
+ if File.exist?(hist)
437
+ open(hist) do |f|
438
+ f.each {|l| HISTORY << l.chomp}
439
+ end
440
+ end
441
+ end
442
+ end
443
+ end
444
+ IRB.conf[:SAVE_HISTORY] = 1000
445
+
446
+ # List contents of directory
447
+ def ls(*args)
448
+ puts `ls #{args.map { |x| "'#{x}'" } * ' '}`
449
+ end
450
+
451
+ if ENV['RAILS_LOG'].to_i == 1
452
+ require 'logger'
453
+ Object.const_defined?(:RAILS_DEFAULT_LOGGER) or
454
+ Object.const_set :RAILS_DEFAULT_LOGGER, Logger.new(STDOUT)
455
+ end