has 'normal_form' => (
is => 'rw',
isa => 'Str',
- predicate => 'has_normal_form',
+ predicate => '_has_normal_form',
+ clearer => '_clear_normal_form',
);
# Holds the lexemes for the reading.
}
}
+# Make normal_form default to text, transparently.
+around 'normal_form' => sub {
+ my $orig = shift;
+ my $self = shift;
+ my( $arg ) = @_;
+ if( $arg && $arg eq $self->text ) {
+ $self->_clear_normal_form;
+ return $arg;
+ } elsif( !$arg && !$self->_has_normal_form ) {
+ return $self->text;
+ } else {
+ $self->$orig( @_ );
+ }
+};
+
=head2 is_meta
A meta attribute (ha ha), which should be true if any of our 'special'
warn "Ran out of readings in sequence at $lexeme";
last;
}
- my $curr_rdg_text = $curr_rdg->has_normal_form
- ? $curr_rdg->normal_form : $curr_rdg->text;
+ my $curr_rdg_text = $curr_rdg->normal_form;
if( $unused_rdg_part &&
$unused_rdg_part =~ /^\Q$lexeme\E(\s*)(.*)$/ ) {
# Nth part of curr_rdg
my @lookahead;
my $matched;
while( my $nr = shift @path ) {
- my $nrtext = $nr->has_normal_form ? $nr->normal_form : $nr->text;
+ my $nrtext = $nr->normal_form;
if( $nrtext =~ /^\Q$lexeme\E/ ) {
$curr_rdg = $lookahead[-1] if @lookahead;
$matched = 1;
unless ( $r->join_prior || !$last || $last->join_next ) {
$pathtext .= ' ';
}
- $pathtext .= ( $normalize && $r->has_normal_form )
- ? $r->normal_form : $r->text;
+ $pathtext .= $normalize ? $r->normal_form : $r->text;
$last = $r;
}
return $pathtext;