package Text::Tradition::Collation::Reading::WordForm;
+use Lingua::Features::Structure;
+use JSON ();
use Moose;
=head1 NAME
required => 1,
);
+around BUILDARGS => sub {
+ my $orig = shift;
+ my $class = shift;
+ my $args = @_ == 1 ? $_[0] : { @_ };
+ if( exists $args->{'JSON'} ) {
+ $DB::single = 1;
+ my @data = split( / \/\/ /, $args->{'JSON'} );
+ print STDERR "Attempting to parse " . $data[2] . " into structure";
+ my $morph = Lingua::Features::Structure->from_string( $data[2] );
+ $args = { 'language' => $data[0], 'lemma' => $data[1],
+ 'morphology' => $morph };
+ }
+ $class->$orig( $args );
+};
+
=head2 to_string
Returns a string combination of language/lemma/morphology that can be used
sub to_string {
my $self = shift;
- return join( '++', $self->language, $self->lemma, $self->morphology->to_string );
+ return JSON->new->convert_blessed(1)->encode( $self );
+}
+
+# Rather than spitting it out as a JSON hash, encode it as a string so that
+# the XML serialization doesn't become insane.
+sub TO_JSON {
+ my $self = shift;
+ return sprintf( "%s // %s // %s", $self->language, $self->lemma,
+ $self->morphology->to_string() );
}
no Moose;