From: Yuval Kogman Date: Sat, 17 Jan 2009 22:36:34 +0000 (+0000) Subject: add _compile_code, a wrapper for _eval_closure and _add_line_directive X-Git-Tag: 0.76~10^2 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=12f7b801265ed02aaa557350a8457a5df6b107df;p=gitmo%2FClass-MOP.git add _compile_code, a wrapper for _eval_closure and _add_line_directive --- diff --git a/lib/Class/MOP/Method/Generated.pm b/lib/Class/MOP/Method/Generated.pm index 7442a2f..9475c92 100644 --- a/lib/Class/MOP/Method/Generated.pm +++ b/lib/Class/MOP/Method/Generated.pm @@ -26,32 +26,6 @@ sub new { return $self; } - -sub _prepare_code { - my ( $self, %args ) = @_; - - my ( $line, $file ); - - if ( my $ctx = ( $args{context} || $self->definition_context ) ) { - $line = $ctx->{line}; - if ( my $desc = $ctx->{description} ) { - $file = "$desc defined at $ctx->{file}"; - } else { - $file = $ctx->{file}; - } - } else { - ( $line, $file ) = ( 0, "generated method (unknown origin)" ); - } - - my $code = $args{code}; - - # if it's an array of lines, join it up - # don't use newlines so that the definition context is more meaningful - $code = join(@$code, ' ') if ref $code; - - return qq{#line $line "$file"\n} . $code; -} - sub _new { my $class = shift; my $options = @_ == 1 ? $_[0] : {@_}; @@ -86,6 +60,39 @@ sub _eval_closure { ); } +sub _add_line_directive { + my ( $self, %args ) = @_; + + my ( $line, $file ); + + if ( my $ctx = ( $args{context} || $self->definition_context ) ) { + $line = $ctx->{line}; + if ( my $desc = $ctx->{description} ) { + $file = "$desc defined at $ctx->{file}"; + } else { + $file = $ctx->{file}; + } + } else { + ( $line, $file ) = ( 0, "generated method (unknown origin)" ); + } + + my $code = $args{code}; + + # if it's an array of lines, join it up + # don't use newlines so that the definition context is more meaningful + $code = join(@$code, ' ') if ref $code; + + return qq{#line $line "$file"\n} . $code; +} + +sub _compile_code { + my ( $self, %args ) = @_; + + my $code = $self->_add_line_directive(%args); + + $self->_eval_closure($args{environment}, $code); +} + 1; __END__