Text-Tradition
view release on metacpan or search on metacpan
lib/Text/Tradition.pm view on Meta::CPAN
following:
=over 4
=item * Self - a GraphML format produced by this module
=item * CollateX - a GraphML format produced by CollateX
=item * CTE - a TEI XML format produced by Classical Text Editor
=item * JSON - an alignment table in JSON format, as produced by CollateX and
other tools
=item * TEI - a TEI parallel segmentation format file
=item * Tabular - a spreadsheet collation. See the documentation for
L<Text::Tradition::Parser::Tabular> for an explanation of additional options.
=back
=item B<file> - The name of the file that contains the data. One of 'file'
or 'string' should be specified.
=item B<string> - A text string that contains the data. One of 'file' or
'string' should be specified.
=back
Initialization based on a list of witnesses [NOT YET IMPLEMENTED]:
=over 4
=item B<witnesses> - A reference to an array of Text::Tradition::Witness
objects that carry the text to be collated.
=item B<collator> - A reference to a collation program that will accept
Witness objects.
=back
=head2 B<witnesses>
Return the Text::Tradition::Witness objects associated with this tradition,
as an array.
=head2 B<witness>( $sigil )
Returns the Text::Tradition::Witness object whose sigil is $sigil, or undef
if there is no such object within the tradition.
=head2 B<add_witness>( %opts )
Instantiate a new witness with the given options (see documentation for
Text::Tradition::Witness) and add it to the tradition.
=head2 B<del_witness>( $sigil )
Delete the witness with the given sigil from the tradition. Returns the
witness object for the deleted witness.
=head2 B<rename_witness>( $oldsigil, $newsigil )
Safely rename (i.e., assign a new sigil to) the given witness. At the moment
this can only be done when the witness does not yet appear in the collation.
=begin testing
use TryCatch;
use_ok( 'Text::Tradition', "can use module" );
my $t = Text::Tradition->new( 'name' => 'empty' );
is( ref( $t ), 'Text::Tradition', "initialized an empty Tradition object" );
is( $t->name, 'empty', "object has the right name" );
is( scalar $t->witnesses, 0, "object has no witnesses" );
my $simple = 't/data/simple.txt';
my $s = Text::Tradition->new(
'name' => 'inline',
'input' => 'Tabular',
'file' => $simple,
);
is( ref( $s ), 'Text::Tradition', "initialized a Tradition object" );
is( $s->name, 'inline', "object has the right name" );
is( scalar $s->witnesses, 3, "object has three witnesses" );
my $wit_a = $s->witness('A');
is( ref( $wit_a ), 'Text::Tradition::Witness', "Found a witness A" );
if( $wit_a ) {
is( $wit_a->sigil, 'A', "Witness A has the right sigil" );
}
is( $s->witness('X'), undef, "There is no witness X" );
ok( !exists $s->{'witnesses'}->{'X'}, "Witness key X not created" );
my $wit_d = $s->add_witness( 'sigil' => 'D', 'sourcetype' => 'plaintext',
'string' => 'je suis depourvu de foi' );
is( ref( $wit_d ), 'Text::Tradition::Witness', "new witness created" );
is( $wit_d->sigil, 'D', "witness has correct sigil" );
is( scalar $s->witnesses, 4, "object now has four witnesses" );
try {
$s->rename_witness( 'D', 'Invalid Sigil' );
ok( 0, "Renamed witness with bad sigil" );
} catch ( Text::Tradition::Error $e ) {
is( $s->witness('D'), $wit_d, "Held onto witness during bad rename" );
}
try {
$s->rename_witness( 'D', 'Q' );
ok( 1, "Rename of witness succeeded" );
is( $s->witness('Q'), $wit_d, "Witness available under new sigil" );
ok( !$s->has_witness('D'), "Witness no longer available under old sigil" );
} catch ( Text::Tradition::Error $e ) {
ok( 0, "Failed to rename witness: " . $e->message );
}
my $del = $s->del_witness( 'Q' );
is( $del, $wit_d, "Deleted correct witness" );
is( scalar $s->witnesses, 3, "object has three witnesses again" );
try {
$s->rename_witness( 'A', 'WitA' );
( run in 0.696 second using v1.01-cache-2.11-cpan-71847e10f99 )