| JavaScript-Code documentation | Contained in the JavaScript-Code distribution. |
JavaScript::Code::Expression - A JavaScript Expression
A Expression Class
Returns a tree of JavaScript::Code::Expression::Op's
Sascha Kiefer, esskar@cpan.org
This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself.
| JavaScript-Code documentation | Contained in the JavaScript-Code distribution. |
package JavaScript::Code::Expression; use strict; use vars qw[ $VERSION ]; use base qw[ JavaScript::Code::Accessor JavaScript::Code::Value ]; __PACKAGE__->mk_ro_accessors(qw[ tree ]); $VERSION = '0.08';
sub command { my ( $self, $op, $left, $right ) = @_; my $class = 'JavaScript::Code::Expression::Op::' . $op; eval "require $class"; die $@ if $@; my $tree; if ( $class->unary ) { $tree = $class->new( $left->isa('JavaScript::Code::Expression') ? $left->tree : JavaScript::Code::Expression::Op::Term->new( $left->clone ) ); } else { $tree = $class->new( $left->isa('JavaScript::Code::Expression') ? $left->tree : JavaScript::Code::Expression::Op::Term->new( $left->clone ), $right->isa('JavaScript::Code::Expression') ? $right->tree : JavaScript::Code::Expression::Op::Term->new( $right->clone ) ); } $self->{tree} = $tree; return $self; }
sub output { my ($self) = @_; my $tree = $self->tree; return '' unless defined $tree; return $tree->output; }
1;