Based on this: http://www.nesium.com/blog/2006/08/04/actionscript-gettersetter-command-for-textmate/
I just changed the format of the code to match the existing code at work.
Command configuration:
Save: nothing
Input: Entire Document
Output: Insert as Snippet
Activation: Choose whatever you want, personally I prefer using “get” as a Tab Trigger
Scope Selector: source.actionscript
Command:
Ick. The formatting of this is horrible. Will fix soon.
#!/usr/bin/ruby
txt = STDIN.read
vars = txt.scan(/^\W*(private|public){0,1}\W*var\W*\_(\w*)\W*\:\W*(\w*)/)
ascript = <<-EOF
tell app "TextMate"
activate
choose from list { %s } with title "Variable auswaehlen" with prompt "Welche Variable als Basis benutzen?"
end tell
EOF
displayList = []
varList = []
vars.each_with_index do |x,i|
scope = x[0]
name = x[1]
type = x[2]
urStr = ""
if ( scope != nil )
urStr += "(" + scope.capitalize() + ") "
end
urStr += "_" + name
if ( type != nil )
urStr += " : " + type
end
displayList.push( urStr )
varList.push( { "name" => name, "type" => type } )
end
list = '"' + displayList.join( '", "' ) + '"'
ascript = ascript % list
params = "<< 'AS'\n #{ascript}\nAS"
cmd = open("|osascript" + params)
result = cmd.gets.chomp()
cmd.close
if ( result == "false" )
exit
end
index = displayList.index( result )
item = varList[ index ]
getter = <<-EOF
public function get %s():%s{
return this._%s;
}
EOF
getter = getter % [ item[ "name" ], item[ "type" ], item[ "name" ] ]
setter = <<-EOF
public function set %s(value:%s):void{
this._%s = value;
}
EOF
setter = setter % [ item[ "name" ], item[ "type" ], item[ "name" ] ]
snippet = getter + "\n" + setter
print snippetas_getset_cmd