1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/usr/bin/env ruby -wKU

require ENV['TM_SUPPORT_PATH'] + '/lib/ui.rb'
require ENV['TM_SUPPORT_PATH'] + '/lib/escape.rb'

new_method_name = TextMate::UI.request_string(
  :title   => 'New Method Name',
  :prompt  => 'Enter the name for your new method:',
  :default => 'charlie'
)

contents = DATA.read
placement = contents.scan(/\bdef \w+/).sort.find{|m| "def #{new_method_name}" < m};
if contents =~ /^([ \t]*)(#{Regexp.escape(placement)})/
  STDOUT << e_sn($`)
  STDOUT << "#$1def #{new_method_name}\n#$1  $0\n#$1end\n\n#$1#$2"
  STDOUT << e_sn($')
end

__END__
class Foo
  def allan
    puts $foo
  end

  def benny
    
  end

  def detron
    
  end
end