The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

class Perldoc::DOM::Text is Perldoc::DOM::Node;

has Str $.content;

# this should really be an acccessor - all it's doing is making the
# "source" property of the object fallback to "content"
method source($self:) {
    $.source || $.content;
}

method dom_fields($self:) {
    $self.SUPER::dom_fields, qw(content);
}

method dom_attr($self:) returns Hash {
    my %att = $self.SUPER::dom_attr();

    %att.delete<source>
        if %att.exists<source> and %att<source> eq %att<content>;

    %att;
}

sub event_type {
    return "characters";
}

=head1 NAME

Perldoc::DOM::Text - text node in a Perldoc::DOM tree

=head1 SYNOPSIS

See L<Perldoc::DOM::Node>.

=head1 DESCRIPTION

A C<Perldoc::DOM::Text> represents a little slice of content in a Perldoc
DOM tree.

It has one property - content.

The constructor for this class has a special shortcut syntax compared
to normal C<Perldoc::DOM::Node>'s / C<Tree::DAG_Node>'s - instead of
specifying options as a hash;

 Perldoc::DOM::Text->new({ content => "foo", source => "foo" });

You can just say;

 Perldoc::DOM::Text->new("foo");

(also, the latter form is slightly more efficient, though this is
marginal in string COW environments)

=cut