NAME ==== Pod::To::Anything AUTHOR ====== Patrick Spek VERSION ======= 0.0.0 Synopsis ======== use Pod::To::Anything; use Pot::To::Anything::Subsets; Description =========== A base class to easily build RakuFormerly known as Perl 6 Pod converters with. Installation ============ Through `zef` ------------- [zef](https://github.com/ugexe/zef) is the standard distribution manager for [Raku](https://raku.org). If you're using an end-user distribution like [Rakudo Star](https://rakudo.org/files/star), it will be installed for you by default. `zef` will install the latest available version from [CPAN](http://www.cpan.org/modules/index.html). ```sh zef install Pod::To::Anything ``` Usage ===== You will need to include the two packages exposed by this module. use Pod::To::Anything; use Pot::To::Anything::Subsets; Now you can make a new class that implements the `Pod::To::Anything` role. class Foo does Pod::To::Anything { } You will need to implement all the supported [Pod6 elements](https://docs.raku.org/language/pod#Block_types). Don't worry too much about missing one, as the compiler will complain about any you missed. For reference, you will need to implement the following methods. multi method render (Pod::Block::Code:D $ --> Str) { … } multi method render (Pod::Block::Declarator:D $ --> Str) { … } multi method render (Pod::Block::Named::Author:D $ --> Str) { … } multi method render (Pod::Block::Named::Name:D $ --> Str) { … } multi method render (Pod::Block::Named::Subtitle:D $ --> Str) { … } multi method render (Pod::Block::Named::Title:D $ --> Str) { … } multi method render (Pod::Block::Named::Version:D $ --> Str) { … } multi method render (Pod::Block::Named::Pod:D $ --> Str) { … } multi method render (Pod::Block::Para:D $ --> Str) { … } multi method render (Pod::Block::Table:D $ --> Str) { … } multi method render (Pod::FormattingCode::B:D $ --> Str) { … } multi method render (Pod::FormattingCode::C:D $ --> Str) { … } multi method render (Pod::FormattingCode::E:D $ --> Str) { … } multi method render (Pod::FormattingCode::I:D $ --> Str) { … } multi method render (Pod::FormattingCode::K:D $ --> Str) { … } multi method render (Pod::FormattingCode::L:D $ --> Str) { … } multi method render (Pod::FormattingCode::N:D $ --> Str) { … } multi method render (Pod::FormattingCode::P:D $ --> Str) { … } multi method render (Pod::FormattingCode::R:D $ --> Str) { … } multi method render (Pod::FormattingCode::T:D $ --> Str) { … } multi method render (Pod::FormattingCode::U:D $ --> Str) { … } multi method render (Pod::FormattingCode::V:D $ --> Str) { … } multi method render (Pod::FormattingCode::X:D $ --> Str) { … } multi method render (Pod::Heading:D $ --> Str) { … } multi method render (Pod::Item:D $ --> Str) { … } There are two convenience methods exposed by `Pod::To::Anything`: `.traverse` and `.unpod`. The former will traverse all the Pod6 elements contained in a given Pod6 element. The latter will do almost the same, except it will turn everything into plain strings, losing all markup value from Pod6 elements. Examples -------- * [`Pod::To::HTML::Section`](https://home.tyil.nl/git/raku/Pod::To::HTML::Section/) Contributing ============ Reporting bugs or other feedback -------------------------------- Any bugs or other feedback can be sent to my email address. I generally try to respond to all mail within 24 hours. Proposing code patches ---------------------- Code patches can also be sent in through email. If you need help to send git patches through email, you may want to read up on [git-send-email.io](https://git-send-email.io/). License ======= This module is distributed under the terms of the GNU AGPL, version 3.0.