add BUILDALL support
[gitmo/Role-Tiny.git] / lib / Method / Generate / BuildAll.pm
CommitLineData
098a367b 1package Method::Generate::BuildAll;
2
3use strictures 1;
4use base qw(Class::Tiny::Object);
5use Sub::Quote;
6use Class::Tiny::_mro;
7use Class::Tiny::_Utils;
8
9sub generate_method {
10 my ($self, $into) = @_;
11 my @builds =
12 grep *{_getglob($_)}{CODE},
13 map "${_}::BUILD",
14 reverse @{mro::get_linear_isa($into)};
15 quote_sub "${into}::BUILDALL", join '',
16 qq{ my \$self = shift;\n},
17 (map qq{ \$self->${_}(\@_);\n}, @builds),
18 qq{ return \$self\n};
19}
20
211;