Commit | Line | Data |
098a367b |
1 | package Method::Generate::BuildAll; |
2 | |
3 | use strictures 1; |
4 | use base qw(Class::Tiny::Object); |
5 | use Sub::Quote; |
6 | use Class::Tiny::_mro; |
7 | use Class::Tiny::_Utils; |
8 | |
9 | sub 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 | |
21 | 1; |