package KiokuDB::TypeMap::Entry::JSON::Scalar;
use Moose;
no warnings 'recursion';
use namespace::clean -except => 'meta';
with qw(KiokuDB::TypeMap::Entry::Std);
sub compile_collapse_body {
my ( $self, $class ) = @_;
return sub {
my ( $collapser, %args ) = @_;
my $scalar = $args{object};
my $data = $collapser->visit($$scalar);
$collapser->make_entry(
%args,
class => "SCALAR",
data => $data,
);
};
}
sub compile_expand {
my ( $self, $reftype ) = @_;
sub {
my ( $linker, $entry ) = @_;
my $scalar;
$linker->inflate_data($entry->data, \$scalar);
return \$scalar;
}
}
sub compile_refresh {
my ( $self, $class, @args ) = @_;
return sub {
my ( $linker, $scalar, $entry ) = @_;
$linker->inflate_data($entry->data, $scalar );
return $scalar;
};
}
__PACKAGE__->meta->make_immutable;
__PACKAGE__
__END__