package Text::Tradition;
-use JSON qw / decode_json /;
+use JSON qw / from_json /;
use Module::Load;
use Moose;
use Text::Tradition::Collation;
use Text::Tradition::Witness;
use vars qw( $VERSION );
-$VERSION = "0.3";
+$VERSION = "0.5";
has 'collation' => (
is => 'ro',
my @text_wits = $t->witnesses();
my $manuscript_a = $t->witness( 'A' );
- my $new_ms = $t->add_witness( 'sigil' => 'B' );
+
+ $t = Text::Tradition->new();
+ $t->add_witness( 'sourcetype' => 'xmldesc',
+ 'file' => '/path/to/teitranscription.xml' );
+ $t->add_witness( 'sourcetype => 'plaintext', 'sigil' => 'Q',
+ 'string' => 'The quick brown fox jumped over the lazy dogs' );
+ ## TODO
+ $t->collate_texts;
my $text_path_svg = $t->collation->as_svg();
## See Text::Tradition::Collation for more on text collation itself
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' );
+my $wit_d = $s->add_witness( 'sigil' => 'D', 'sourcetype' => 'collation' );
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" );
sub add_json_witnesses {
my( $self, $jsonstr, $extraopts ) = @_;
- my $witarray = decode_json( $jsonstr );
- foreach my $witspec ( @$witarray ) {
+ my $witarray = from_json( $jsonstr );
+ foreach my $witspec ( @{$witarray->{witnesses}} ) {
my $opts = $extraopts || {};
$opts->{'sourcetype'} = 'json';
$opts->{'object'} = $witspec;
return $stemma;
}
+sub lemmatize {
+ my $self = shift;
+ unless( $self->has_language ) {
+ warn "Please set a language to lemmatize a tradition";
+ return;
+ }
+ my $mod = "Text::Tradition::Language::" . $self->language;
+ load( $mod );
+ $mod->can( 'lemmatize' )->( $self );
+}
+
no Moose;
__PACKAGE__->meta->make_immutable;