The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

MojoMojo::Formatter - Base class for all formatters

SYNOPSIS

    package MojoMojo::Formatter::Simple;
    
    use parent qw/MojoMojo::Formatter/;
    
    sub format_content_order { 1 } 
    
    sub format_content {
        my ($class,$content,$c)=@_;
        $$content =~ s/fuck/f**k/g;
        return $content;
    }
    

DESCRIPTION

This is the class to inherit from if you want to write your own formatter.

WRITING YOUR OWN FORMATTER

See the synopsis for a really simple formatter example. MojoMojo uses Module::Pluggable::Ordered to process all the formatter plugins. Just specify when you want to trigger your formatter by providing a format_content_order method which returns a number to specify when you want to run. The plugin order for the default plugins is currently as follows:

1 - MojoMojo::Formatter::Redirect - handles =redirect
6 - MojoMojo::Formatter::Include - handles =http://<url>
7 - MojoMojo::Formatter::Scrub - Removes harmful HTML
10 - MojoMojo::Formatter::Wiki - Handles [[wikiwords]]
10 - MojoMojo::Formatter::Pod - handles =pod ... =pod blocks
14 - MojoMojo::Formater::IRCLog - handles =irc ... =irc blocks
15 - Main formatter (either MojoMojo::Formatter::Textile or MojoMojo::Formatter::Markdown)
91 - MojoMojo::Formatter::Comment Handles =comments , inserts a comment box
95 - MojoMojo::Formatter::TOC replace =toc with table of contents
99 - MojoMojo::Formatter::SyntaxHighlight - Performs syntax highlighting on code blocks

Note that if your formatter expects a HTML body, it should run after the main formatter.

If you want your formatter to do something, you also need to override format_content. it get's passed it's classname, a scalar ref to the content, and the context object. it should return the scalarref.

METHODS

You can also override further methods to your formatter:

primary_formatter

Primary formatters are those who handle the basic job of translating markup to HTML. In the default distribution there are currently two, Textile and Markdown, with Textile being the default setting. You can change this through Prefs. Override this method to return 1 to contend for as a primary formatter. Note that primary formatters should run at 15.

SEE ALSO

MojoMojo,MojoMojo::Formatter::Textile,MojoMojo::Formatter::Markdown

AUTHORS

Marcus Ramberg <mramberg@cpan.org>

License

This module is licensed under the same terms as Perl itself.