Kwiki::Formatter::Emphasis - Will add new syntax for emphasizing text and


Kwiki-Formatter-Emphasis documentation Contained in the Kwiki-Formatter-Emphasis distribution.

Index


Code Index:

NAME

Top

Kwiki::Formatter::Emphasis - Will add new syntax for emphasizing text and fix a bug in the Kwiki core that will make the built-in italic syntax actually italicize the text.

SYNOPSIS

Top

        ~foo~

Produces <em>foo</em>

        /foo/

Produces <i>foo</i>

AUTHOR

Top

Eric Anderson, <eric at cordata.com>

COPYRIGHT & LICENSE

Top


Kwiki-Formatter-Emphasis documentation Contained in the Kwiki-Formatter-Emphasis distribution.

package Kwiki::Formatter::Emphasis;

use warnings;
use strict;
use Kwiki::Plugin '-Base';
use mixin 'Kwiki::Installer';
our $VERSION = '0.01';

const class_title => 'Emphasis';
const class_id => 'wikiemphasis';

sub register {
        my $registry = shift;
        $registry->add(preload => $self->class_id);
        $registry->add(hook => 'formatter:all_phrases',
                post => 'add_emphasis_to_list',
        );
}

sub init {
        super;
        my $formatter = $self->hub->load_class('formatter');
        $formatter->table->{emphasis} = 'Kwiki::Formatter::Emphasis::Phrase';
        $formatter->table->{em} = 'Kwiki::Formatter::Italicize';
}

sub add_emphasis_to_list {
        return [('emphasis', @{$_[-1]->returned})];
}

package Kwiki::Formatter::Emphasis::Phrase;
use Spoon::Base -Base;
use Kwiki ':char_classes';
use base 'Spoon::Formatter::Phrase';

const formatter_id => 'emphasis';
const pattern_start => qr/(^|(?<=[^$ALPHANUM]))\~(?=\S[^\~]*\~(?=\W|\z))/;
const pattern_end => qr/\~(?=[^$ALPHANUM]|\z)/;
const html_start => "<em>";
const html_end => "</em>";

package Kwiki::Formatter::Italicize;
use Spoon::Base -Base;
use base 'Spoon::Formatter::Phrase';
use Kwiki ':char_classes';
const formatter_id => 'em';
const pattern_start => qr/(^|(?<=[^$ALPHANUM]))\/(?=\S[^\/]*\/(?=\W|\z))/;
const pattern_end => qr/\/(?=[^$ALPHANUM]|\z)/;
const html_start => "<i>";
const html_end => "</i>";

package Kwiki::Formatter::Emphasis;
1; # End of Kwiki::Formatter::Emphasis
__DATA__