package Data::Zipper::MOP;
  $Data::Zipper::MOP::VERSION = '0.02';
# ABSTRACT: A zipper for MOP based objects

use warnings FATAL => 'all';
use Moose;
use namespace::autoclean;

use MooseX::Types::Moose qw( Object Str ArrayRef );
use MooseX::Types::Structured qw( Tuple );

with 'Data::Zipper::API' => { type => Tuple[ Str, Object ] };

sub traverse {
    my ($self, $path) = @_;
    return (
        [ $path, $self->focus ],

sub reconstruct {
    my ($self, $value, $path) = @_;
    my ($key, $object) = @$path;
        $key => $value



=encoding utf-8

=head1 NAME

Data::Zipper::MOP - A zipper for MOP based objects

=head1 METHODS

=head2 traverse

Traverse into the object under focus, by moving into the value of an attribute
with a given name. Currently assumes the reader is the same as the name.

=head2 reconstruct


=head1 AUTHOR

Oliver Charles


This software is copyright (c) 2011 by Oliver Charles <>.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.