utils 0.0.0

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.
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