package Pugs::Emitter::Perl6::Perl5::Any; # Compile-time a Perl 5 thing, with hardcoded, autoboxed methods use strict; use warnings; use base 'Pugs::Emitter::Perl6::Perl5::node'; use overload ( '""' => sub { $_[0]->{name} }, fallback => 1, ); sub boxed { $_[0] } sub name { $_[0]->{name} } sub WHAT { $_[0]->node( 'Str', 'Any' ); } sub isa { return $_[0]->WHAT . ' eq ' . $_[1]->WHAT; } sub get { my $self = $_[0]; return $self->name; } sub set { my $self = $_[0]; return $self->name . ' = ' . $_[1]->get; } sub str { $_[0]->node( 'StrExpression', '( "" . ' . $_[0] . ' )' ); } sub perl { $_[0]->node( 'str', "$_[0]" ) } sub defined { 'defined ' . $_[0]; } sub print { $_[0]->node( 'AnyExpression', '( print ' . $_[0]->str . ' )' ); } sub say { $_[0]->node( 'AnyExpression', '( print ' . $_[0]->str . ', "\n" )' ); } sub warn { $_[0]->node( 'AnyExpression', '( warn ' . $_[0]->str . ' )' ); } sub yaml { $_[0]->node( 'StrExpression', 'Pugs::Runtime::Perl6::Scalar::yaml( ' . $_[0] . ' )' ); } 1;