
NAME
Pod::TreeWalker - Walk a Pod tree and generate an event for each node
SYNOPSIS
use Pod::TreeWalker;
my $L = My::Listener.new;
my $o = Pod::TreeWalker.new: :listener($L);
my @events = $o.walk-pod($=pod);
DESCRIPTION
This class provides an API for walking a pod tree (as provided by $=pod
). Each node in the tree will trigger one or more events. These events cause methods to be called on a listener object that you provide. This lets you do something with a Pod document without having to know much about the underlying tree structure of Pod.
Note: Use distribution Pod::Load
for an easy way to access the Pod from a file or a string.
METHODS
new
my $walker = Pod::TreeWalker.new: :listener($object);
The constructor requires a single named argument :listener
. This object must implement the Pod::TreeWalker::Listener
API as demonstrated in file './t/lib/TestListener.rakumod'. See more details in LISTENER.
walk-pod
my @events = $walker.walk-pod($pod);
This method walks through a pod tree starting with the top node in $pod
. You can provide either an array of pod nodes (as stored in $=pod
) or a single top-level node (such as $=pod[0]
). The @events
list provides the details of each pod node encountered.
text-content-of
say $walker.text-contents-of($pod)
Given a Pod::Block
of any sort, this method recursively descends the blocks contents and returns the concatenation of all the plain text that it finds.
AUTHOR
Dave Rolsky
COPYRIGHT AND LICENSE
Copyright 2015 - 2018 Dave Rolsky
Copyright 2019 - 2025 Raku Community
This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.