package MooseX::Semantic::Test;
use RDF::Trine ();
use Term::ANSIColor;
use String::Diff;
use Data::Dumper;
require Exporter;
@ISA = qw(Exporter);
@EXPORT_OK = qw(ser ser_dump diff_models Dumper);  # symbols to export on request
my ($red, $green, $reset) = map {color $_} qw(red green reset);
%String::Diff::DEFAULT_MARKS = (
        remove_open  => $red,
        remove_close => $reset,
        append_open  => $green,
        append_close => $reset,
        separator => '',
    # separator    => '<-OLD|NEW->', # for diff_merge
);

sub ser {
    my $format = shift || 'ntriples';
    return RDF::Trine::Serializer->new($format);
}
sub ser_dump {
    my $model = shift;
    my $format = shift || 'ntriples';
    ser->serialize_model_to_string( $model );
}
# warn Dumper( color 'blue' );
sub diff_models {
    my ($m1, $m2) = sort {$a->size < $b->size} @_;
    my ($m1_str, $m2_str) = map{ser_dump($_)} $m1, $m2;
    # my ($m1_str_lines, $m2_str_lines) = map{[split "\n", $_]} $m1_str, $m2_str;
    # my ( $m1_lines, $m2_lines ) = map {
        # my $m = $_;
        # [ map { ser_dump($m) } split( '\n', $_ ) ]
    # } $m1_str, $m2_str;
    # warn Dumper $m2_str_lines;
    my $diff = String::Diff::diff_merge($m1_str, $m2_str);
    print $diff;
}

1;