s/$orig/<{$next}>/ :)
[gitmo/moose-dev-utils.git] / vim / moose_snippets.vim
index 67a835d..7b35cf5 100644 (file)
@@ -1,22 +1,21 @@
 " 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()
+function! RemoveEmptySuperClass()
     s/^extends '<{}>';\n//e
     return @z
 endfun
 
-function LazyBuilder()
-    let pattern = "has\\s\\+\\zs.\\{-}\\ze\\s\\+=>"
-    let lnum = search(pattern, 'bnW')
-    return matchstr(getline(lnum), pattern)
-endfunction
+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
@@ -29,7 +28,7 @@ function Snippet(abbr, str)
     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)
@@ -51,17 +50,17 @@ 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:LazyBuilder()}> {",
+            \"sub _build_<{attr}> {",
             \    "my $self = shift;",
             \    "<{}>",
             \"}"])
@@ -72,7 +71,17 @@ call Snippet('sub', [
             \"}"])
 call Snippet('around', [
             \"around <{name}> => sub {",
-            \    "my $orig = shift;",
+            \    "my $<{next}> = shift;",
+            \    "my $self = shift;",
+            \    "<{}>",
+            \"};"])
+call Snippet('before', [
+            \"before <{name}> => sub {",
+            \    "my $self = shift;",
+            \    "<{}>",
+            \"};"])
+call Snippet('after', [
+            \"after <{name}> => sub {",
             \    "my $self = shift;",
             \    "<{}>",
             \"};"])