Remove LazyBuilder, SnippetsEmu already handles this fine
[gitmo/moose-dev-utils.git] / vim / moose_snippets.vim
1 " See http://www.vim.org/scripts/script.php?script_id=1318
2 " Written by Sartak, feel free to add your own!
3
4 if !exists('loaded_snippet') || &cp
5     finish
6 endif
7
8 function RemoveEmptySuperClass()
9     s/^extends '<{}>';\n//e
10     return @z
11 endfun
12
13 function Snippet(abbr, str)
14     if type(a:str) == type([])
15         return Snippet(a:abbr, join(a:str, "\n"))
16     endif
17     let st = g:snip_start_tag
18     let et = g:snip_end_tag
19     let cd = g:snip_elem_delim
20     let str = substitute(a:str, '<{.\{-}\zs:\ze.\{-}}>', cd, "")
21     let str = substitute(str, '<{', st, "")
22     let str = substitute(str, '}>', et, "")
23     exec 'Snippet '.a:abbr.' '.str
24 endfunction
25
26 function SnippetFile(filename)
27     let abbr = fnamemodify(a:filename, ':t:r')
28     let str = readfile(a:filename)
29     return Snippet(abbr, str)
30 endfunction
31
32 call Snippet('class', [
33             \"package <{ClassName}>;",
34             \"use Moose;",
35             \"",
36             \"extends '<{SuperClass:RemoveEmptySuperClass()}>;",
37             \"",
38             \"<{}>",
39             \"",
40             \"__PACKAGE__->meta->make_immutable;",
41             \"no Moose;",
42             \"",
43             \"1;"])
44 call Snippet('has', [
45             \"has <{attr}> => (",
46             \    "is  => '<{rw}>',",
47             \    "isa => '<{Str}>',",
48             \    "<{}>",
49             \");"])
50 call Snippet('hasl', [
51             \"has <{attr}> => (",
52             \    "is         => '<{rw}>',",
53             \    "isa        => '<{Str}>',",
54             \    "lazy_build => 1,",
55             \    "<{}>",
56             \");",
57             \"",
58             \"sub _build_<{attr}> {",
59             \    "my $self = shift;",
60             \    "<{}>",
61             \"}"])
62 call Snippet('sub', [
63             \"sub <{name}> {",
64             \    "my $self = shift;",
65             \    "<{}>",
66             \"}"])
67 call Snippet('around', [
68             \"around <{name}> => sub {",
69             \    "my $orig = shift;",
70             \    "my $self = shift;",
71             \    "<{}>",
72             \"};"])
73 call Snippet('before', [
74             \"before <{name}> => sub {",
75             \    "my $self = shift;",
76             \    "<{}>",
77             \"};"])
78 call Snippet('after', [
79             \"after <{name}> => sub {",
80             \    "my $self = shift;",
81             \    "<{}>",
82             \"};"])
83
84 "for file in globpath(&rtp, 'snippets/*')
85     "call SnippetFile(file)
86 "endfor