" See http://www.vim.org/scripts/script.php?script_id=1318
-" Written by Sartak, feel free to add your own!
+" Written by Sartak and doy, feel free to add your own!
if !exists('loaded_snippet') || &cp
finish
endif
-function RemoveEmptySuperClass()
- s/^extends '<{}>';\n//e
+function! RemoveEmptySuperClass()
+ if @z == "SuperClass"
+ s/extends '<{}>';\n\n//e
+ return ""
+ endif
+
+ return @z
+endfun
+
+function! RemoveEmptyLine()
+ s/^\s*<{}>\s*\n//e
return @z
endfun
-function Snippet(abbr, str)
+function! Snippet(abbr, str)
if type(a:str) == type([])
return Snippet(a:abbr, join(a:str, "\n"))
endif
exec 'Snippet '.a:abbr.' '.str
endfunction
-function SnippetFile(filename)
+function! SnippetFile(filename)
let abbr = fnamemodify(a:filename, ':t:r')
let str = readfile(a:filename)
return Snippet(abbr, str)
\"package <{ClassName}>;",
\"use Moose;",
\"",
- \"extends '<{SuperClass:RemoveEmptySuperClass()}>;",
+ \"extends '<{SuperClass:RemoveEmptySuperClass()}>';",
\"",
\"<{}>",
\"",
\"no Moose;",
\"",
\"1;"])
+call Snippet('role', [
+ \"package <{RoleName}>;",
+ \"use Moose::Role;",
+ \"",
+ \"<{}>",
+ \"",
+ \"no Moose::Role;",
+ \"",
+ \"1;"])
call Snippet('has', [
\"has <{attr}> => (",
\ "is => '<{rw}>',",
\ "isa => '<{Str}>',",
- \ "<{}>",
+ \ "<{options:RemoveEmptyLine()}>",
\");"])
call Snippet('hasl', [
\"has <{attr}> => (",
\ "is => '<{rw}>',",
\ "isa => '<{Str}>',",
\ "lazy_build => 1,",
- \ "<{}>",
+ \ "<{options:RemoveEmptyLine()}>",
\");",
\"",
\"sub _build_<{attr}> {",
\"}"])
call Snippet('around', [
\"around <{name}> => sub {",
- \ "my $orig = shift;",
+ \ "my $<{next}> = shift;",
\ "my $self = shift;",
\ "<{}>",
\"};"])
\ "<{}>",
\"};"])
+" MooseX support
+call Snippet('prole', [
+ \"package <{RoleName}>;",
+ \"use MooseX::Role::Parameterized;",
+ \"",
+ \"<{}>",
+ \"",
+ \"role {",
+ \"my $p = shift;",
+ \"",
+ \"<{}>",
+ \"};",
+ \"",
+ \"no MooseX::Role::Parameterized;",
+ \"",
+ \"1;"])
+
"for file in globpath(&rtp, 'snippets/*')
"call SnippetFile(file)
"endfor