is( scalar $st->collation->paths, $PATHS, "Reparsed collation has all paths" );
is( scalar $st->collation->relationships, 3, "Reparsed collation has new relationships" );
+# Now add a stemma, write to GraphML, and parse again.
+my $stemma = $tradition->add_stemma( 'dotfile' => 't/data/florilegium.dot' );
+is( ref( $stemma ), 'Text::Tradition::Stemma', "Parsed dotfile into stemma" );
+is( $tradition->stemmata, 1, "Tradition now has the stemma" );
+$graphml = $c->as_graphml;
+like( $graphml, qr/digraph/, "Digraph declaration exists in GraphML" );
+
=end testing
=cut
next unless $save_types{$attr->type_constraint->name};
$graph_attributes{$attr->name} = $save_types{$attr->type_constraint->name};
}
+ # Extra custom key for the tradition stemma(ta)
+ $graph_attributes{'stemmata'} = 'string';
foreach my $datum ( sort keys %graph_attributes ) {
$graph_data_keys{$datum} = 'dg'.$gdi++;
$sgraph->setAttribute( 'parse.nodes', 0 ); # fill in later
$sgraph->setAttribute( 'parse.order', 'nodesfirst' );
- # Collation attribute data
+ # Tradition/collation attribute data
foreach my $datum ( keys %graph_attributes ) {
my $value;
if( $datum eq 'version' ) {
- $value = '3.1';
+ $value = '3.2';
+ } elsif( $datum eq 'stemmata' ) {
+ my @stemstrs;
+ map { push( @stemstrs, $_->editable( {linesep => ''} ) ) }
+ $self->tradition->stemmata;
+ $value = join( "\n", @stemstrs );
} elsif( $gattr_from{$datum} eq 'Tradition' ) {
$value = $self->tradition->$datum;
} else {
is( scalar $t->witnesses, 13, "Collation has all witnesses" );
}
-# TODO add a relationship, write graphml, reparse it, check that the rel
-# is still there
+# TODO add a relationship, add a stemma, write graphml, reparse it, check that
+# the new data is there
$t->language('Greek');
+$t->add_stemma( 'dotfile' => 't/data/florilegium.dot' );
$t->collation->add_relationship( 'w12', 'w13',
{ 'type' => 'grammatical', 'scope' => 'global',
'annotation' => 'This is some note' } );
my $rel = $newt->collation->get_relationship( 'w12', 'w13' );
ok( $rel, "Found set relationship" );
is( $rel->annotation, 'This is some note', "Relationship has its properties" );
+ is( scalar $newt->stemmata, 1, "Tradition has its stemma" );
+ is( $newt->stemma(0)->witnesses, $t->stemma(0)->witnesses, "Stemma has correct length witness list" );
}
my $val = $graph_data->{'global'}->{$gkey};
if( $gkey eq 'version' ) {
$use_version = $val;
+ } elsif( $gkey eq 'stemmata' ) { # Special case, yuck
+ foreach my $dotstr ( split( /\n/, $val ) ) {
+ $tradition->add_stemma( 'dot' => $dotstr );
+ }
} elsif( $tmeta->has_attribute( $gkey ) ) {
$tradition->$gkey( $val );
} else {
is( scalar $st->collation->readings, $READINGS, "Reparsed collation has all readings" );
is( scalar $st->collation->paths, $PATHS, "Reparsed collation has all paths" );
is( scalar $st->collation->relationships, 3, "Reparsed collation has new relationships" );
+
+# Now add a stemma, write to GraphML, and parse again.
+my $stemma = $tradition->add_stemma( 'dotfile' => 't/data/florilegium.dot' );
+is( ref( $stemma ), 'Text::Tradition::Stemma', "Parsed dotfile into stemma" );
+is( $tradition->stemmata, 1, "Tradition now has the stemma" );
+$graphml = $c->as_graphml;
+like( $graphml, qr/digraph/, "Digraph declaration exists in GraphML" );
}
is( scalar $t->witnesses, 13, "Collation has all witnesses" );
}
-# TODO add a relationship, write graphml, reparse it, check that the rel
-# is still there
+# TODO add a relationship, add a stemma, write graphml, reparse it, check that
+# the new data is there
$t->language('Greek');
+$t->add_stemma( 'dotfile' => 't/data/florilegium.dot' );
$t->collation->add_relationship( 'w12', 'w13',
{ 'type' => 'grammatical', 'scope' => 'global',
'annotation' => 'This is some note' } );
my $rel = $newt->collation->get_relationship( 'w12', 'w13' );
ok( $rel, "Found set relationship" );
is( $rel->annotation, 'This is some note', "Relationship has its properties" );
+ is( scalar $newt->stemmata, 1, "Tradition has its stemma" );
+ is( $newt->stemma(0)->witnesses, $t->stemma(0)->witnesses, "Stemma has correct length witness list" );
}
}