You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							329 lines
						
					
					
						
							7.8 KiB
						
					
					
				
			
		
		
	
	
							329 lines
						
					
					
						
							7.8 KiB
						
					
					
				priority -50 | 
						|
 | 
						|
# | 
						|
# Global functions | 
						|
# | 
						|
 | 
						|
global !p | 
						|
 | 
						|
def write_instance_vars(arglist, snip): | 
						|
	args = str(arglist).split(',') | 
						|
	for arg in args: | 
						|
		name = arg.strip().replace(':', ' ').split(' ', 1)[0] | 
						|
		if name: | 
						|
			snip += '  @{} = {}'.format(name, name) | 
						|
		else: | 
						|
			snip += '' | 
						|
 | 
						|
endglobal | 
						|
 | 
						|
# | 
						|
# Snippets | 
						|
# | 
						|
 | 
						|
snippet "^#!" "#!/usr/bin/env ruby" r | 
						|
#!/usr/bin/env ruby | 
						|
$0 | 
						|
endsnippet | 
						|
 | 
						|
snippet "^# ?[uU][tT][fF]-?8" "# encoding: UTF-8" r | 
						|
# encoding: UTF-8 | 
						|
$0 | 
						|
endsnippet | 
						|
 | 
						|
snippet "\b(de)?f" "def <name>..." r | 
						|
def ${1:function_name}${2:(${3:*args})} | 
						|
	$0 | 
						|
end | 
						|
endsnippet | 
						|
 | 
						|
snippet defi "def initialize ..." | 
						|
def initialize($1)`!p write_instance_vars(t[1],snip)`$0 | 
						|
end | 
						|
endsnippet | 
						|
 | 
						|
snippet defr "def <name> ... rescue ..." | 
						|
def ${1:function_name}${2:(${3:*args})} | 
						|
	$4 | 
						|
rescue | 
						|
	$0 | 
						|
end | 
						|
endsnippet | 
						|
 | 
						|
snippet For "(<from>..<to>).each { |<i>| <block> }" | 
						|
(${1:from}..${2:to}).each { |${3:i}| $0 } | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.Merge!" ".merge!(<other_hash>) { |<key>,<oldval>,<newval>| <block> }" r | 
						|
`!p snip.rv=match.group(1)`.merge!(${1:other_hash}) { |${2:key},${3:oldval},${4:newval}| ${5:block} } | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.merge!" ".merge!(<other_hash>) do |<key>,<oldval>,<newval>| <block> end" r | 
						|
`!p snip.rv=match.group(1)`.merge!(${1:other_hash}) do |${2:key},${3:oldval},${4:newval}| | 
						|
	${0:block} | 
						|
end | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.Del(ete)?_?if" ".delete_if { |<key>,<value>| <block> }" r | 
						|
`!p snip.rv=match.group(1)`.delete_if { |${1:key},${2:value}| $0 } | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.del(ete)?_?if" ".delete_if do |<key>,<value>| <block> end" r | 
						|
`!p snip.rv=match.group(1)`.delete_if do |${1:key},${2:value}| | 
						|
	$0 | 
						|
end | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.Keep_?if" ".keep_if { |<key>,<value>| <block> }" r | 
						|
`!p snip.rv=match.group(1)`.keep_if { |${1:key},${2:value}| $0 } | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.keep_?if" ".keep_if do <key>,<value>| <block> end" r | 
						|
`!p snip.rv=match.group(1)`.keep_if do |${1:key},${2:value}| | 
						|
	$0 | 
						|
end | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.Reject" ".reject { |<key>,<value>| <block> }" r | 
						|
`!p snip.rv=match.group(1)`.reject { |${1:key},${2:value}| $0 } | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.reject" ".reject do <key>,<value>| <block> end" r | 
						|
`!p snip.rv=match.group(1)`.reject do |${1:key},${2:value}| | 
						|
	$0 | 
						|
end | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.Select" ".select { |<item>| <block>}" r | 
						|
`!p snip.rv=match.group(1)`.select { |${1:item}| ${2:block} } | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.select" ".select do |<item>| <block> end" r | 
						|
`!p snip.rv=match.group(1)`.select do |${1:item}| | 
						|
	${0:block} | 
						|
end | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.Sort" ".sort { |<a>,<b>| <block> }" r | 
						|
`!p snip.rv=match.group(1)`.sort { |${1:a},${2:b}| $0 } | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.sort" ".sort do |<a>,<b>| <block> end" r | 
						|
`!p snip.rv=match.group(1)`.sort do |${1:a},${2:b}| | 
						|
	$0 | 
						|
end | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.Each_?k(ey)?" ".each_key { |<key>| <block> }" r | 
						|
`!p snip.rv=match.group(1)`.each_key { |${1:key}| $0 } | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.each_?k(ey)?" ".each_key do |key| <block> end" r | 
						|
`!p snip.rv=match.group(1)`.each_key do |${1:key}| | 
						|
	$0 | 
						|
end | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.Each_?val(ue)?" ".each_value { |<value>| <block> }" r | 
						|
`!p snip.rv=match.group(1)`.each_value { |${1:value}| $0 } | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.each_?val(ue)?" ".each_value do |<value>| <block> end" r | 
						|
`!p snip.rv=match.group(1)`.each_value do |${1:value}| | 
						|
	$0 | 
						|
end | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.ea" "<elements>.each do |<element>| <block> end" r | 
						|
`!p snip.rv=match.group(1)`.each { |${1:e}| $0 } | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.ead" "<elements>.each do |<element>| <block> end" r | 
						|
`!p snip.rv=match.group(1)`.each do |${1:e}| | 
						|
	$0 | 
						|
end | 
						|
endsnippet | 
						|
 | 
						|
snippet "each_?s(lice)?" "<array>.each_slice(n) do |slice| <block> end" r | 
						|
${1:elements}.each_slice(${2:2}) do |${3:slice}| | 
						|
	$0 | 
						|
end | 
						|
endsnippet | 
						|
 | 
						|
snippet "Each_?s(lice)?" "<array>.each_slice(n) { |slice| <block> }" r | 
						|
${1:elements}.each_slice(${2:2}) { |${3:slice}| $0 } | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.Map" ".map { |<element>| <block> }" r | 
						|
`!p snip.rv=match.group(1)`.map { |${1:`!p | 
						|
element_name = match.group(1).lstrip('$@') | 
						|
ematch = re.search("([A-Za-z][A-Za-z0-9_]+?)s?[^A-Za-z0-9_]*?$", element_name) | 
						|
try: | 
						|
	wmatch = re.search("([A-Za-z][A-Za-z0-9_]+)$", ematch.group(1)) | 
						|
	snip.rv = wmatch.group(1).lower() | 
						|
except: | 
						|
	snip.rv = 'element' | 
						|
`}| $0 } | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.map" ".map do |<element>| <block> end" r | 
						|
`!p snip.rv=match.group(1)`.map do |${1:`!p | 
						|
element_name = match.group(1).lstrip('$@') | 
						|
ematch = re.search("([A-Za-z][A-Za-z0-9_]+?)s?[^A-Za-z0-9_]*?$", element_name) | 
						|
try: | 
						|
	wmatch = re.search("([A-Za-z][A-Za-z0-9_]+)$", ematch.group(1)) | 
						|
	snip.rv = wmatch.group(1).lower() | 
						|
except: | 
						|
	snip.rv = 'element' | 
						|
`}| | 
						|
	$0 | 
						|
end | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.Rev(erse)?_?each" ".reverse_each { |<element>| <block> }" r | 
						|
`!p snip.rv=match.group(1)`.reverse_each { |${1:`!p | 
						|
element_name = match.group(1).lstrip('$@') | 
						|
ematch = re.search("([A-Za-z][A-Za-z0-9_]+?)s?[^A-Za-z0-9_]*?$", element_name) | 
						|
try: | 
						|
	wmatch = re.search("([A-Za-z][A-Za-z0-9_]+)$", ematch.group(1)) | 
						|
	snip.rv = wmatch.group(1).lower() | 
						|
except: | 
						|
	snip.rv = 'element' | 
						|
`}| $0 } | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.rev(erse)?_?each" ".reverse_each do |<element>| <block> end" r | 
						|
`!p snip.rv=match.group(1)`.reverse_each do |${1:`!p | 
						|
element_name = match.group(1).lstrip('$@') | 
						|
ematch = re.search("([A-Za-z][A-Za-z0-9_]+?)s?[^A-Za-z0-9_]*?$", element_name) | 
						|
try: | 
						|
	wmatch = re.search("([A-Za-z][A-Za-z0-9_]+)$", ematch.group(1)) | 
						|
	snip.rv = wmatch.group(1).lower() | 
						|
except: | 
						|
	snip.rv = 'element' | 
						|
`}| | 
						|
	$0 | 
						|
end | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.Each" ".each { |<element>| <block> }" r | 
						|
`!p snip.rv=match.group(1)`.each { |${1:`!p | 
						|
element_name = match.group(1).lstrip('$@') | 
						|
ematch = re.search("([A-Za-z][A-Za-z0-9_]+?)s?[^A-Za-z0-9_]*?$", element_name) | 
						|
try: | 
						|
	wmatch = re.search("([A-Za-z][A-Za-z0-9_]+)$", ematch.group(1)) | 
						|
	snip.rv = wmatch.group(1).lower() | 
						|
except: | 
						|
	snip.rv = 'element' | 
						|
`}| $0 } | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.each" ".each do |<element>| <block> end" r | 
						|
`!p snip.rv=match.group(1)`.each do |${1:`!p | 
						|
element_name = match.group(1).lstrip('$@') | 
						|
ematch = re.search("([A-Za-z][A-Za-z0-9_]+?)s?[^A-Za-z0-9_]*?$", element_name) | 
						|
try: | 
						|
	wmatch = re.search("([A-Za-z][A-Za-z0-9_]+)$", ematch.group(1)) | 
						|
	snip.rv = wmatch.group(1).lower() | 
						|
except: | 
						|
	snip.rv = 'element' | 
						|
`}| | 
						|
	$0 | 
						|
end | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.Each_?p(air)?"  ".each_pair { |<key>,<value>| <block> }" r | 
						|
`!p snip.rv=match.group(1)`.each_pair { |${1:key},${2:value}| $0 } | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.each_?p(air)?" ".each_pair do |<key>,<value>| <block> end" r | 
						|
`!p snip.rv=match.group(1)`.each_pair do |${1:key},${2:value}| | 
						|
	$0 | 
						|
end | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.sub" ".sub(<expression>) { <block> }" r | 
						|
`!p snip.rv=match.group(1)`.sub(${1:expression}) { ${2:"replace_with"} } | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.gsub" ".gsub(<expression>) { <block> }" r | 
						|
`!p snip.rv=match.group(1)`.gsub(${1:expression}) { ${2:"replace_with"} } | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.index" ".index { |item| <block> }" r | 
						|
`!p snip.rv=match.group(1)`.index { |${1:item}| ${2:block} } | 
						|
endsnippet | 
						|
 | 
						|
snippet "(\S+)\.Index" ".index do |item| ... end" r | 
						|
`!p snip.rv=match.group(1)`.index do |${1:item}| | 
						|
	${0:block} | 
						|
end | 
						|
endsnippet | 
						|
 | 
						|
snippet until "until <expression> ... end" | 
						|
until ${1:expression} | 
						|
	$0 | 
						|
end | 
						|
endsnippet | 
						|
 | 
						|
snippet Until "begin ... end until <expression>" | 
						|
begin | 
						|
	$0 | 
						|
end until ${1:expression} | 
						|
endsnippet | 
						|
 | 
						|
snippet while "while <expression> ... end" | 
						|
while ${1:expression} | 
						|
	$0 | 
						|
end | 
						|
endsnippet | 
						|
 | 
						|
snippet While "begin ... end while <expression>" | 
						|
begin | 
						|
	$0 | 
						|
end while ${1:expression} | 
						|
endsnippet | 
						|
 | 
						|
snippet begin "begin ... rescue ... end" | 
						|
begin | 
						|
	$1 | 
						|
rescue | 
						|
	$0 | 
						|
end | 
						|
endsnippet | 
						|
 | 
						|
snippet rescue | 
						|
rescue Exception => e | 
						|
	puts e.message | 
						|
	puts e.backtrace.inspect | 
						|
	${0:# Rescue} | 
						|
endsnippet | 
						|
 | 
						|
snippet "\b(case|sw(itch)?)" "case <variable> when <expression> ... end" r | 
						|
case ${1:variable} | 
						|
when ${2:expression} | 
						|
$0 | 
						|
end | 
						|
endsnippet | 
						|
 | 
						|
snippet class "class <class_name> def initialize ... end end" | 
						|
class ${1:class_name} | 
						|
	def initialize(${2:*args}) | 
						|
		$0 | 
						|
	end | 
						|
end | 
						|
endsnippet | 
						|
 | 
						|
snippet module "module" | 
						|
module ${1:module_name} | 
						|
	$0 | 
						|
end | 
						|
endsnippet | 
						|
 | 
						|
snippet ### | 
						|
=begin | 
						|
	$0 | 
						|
=end | 
						|
endsnippet | 
						|
 | 
						|
# vim: set ts=2 sw=2 expandtab:
 | 
						|
 |