Markdent::Role::AnyParser - A role for block and span parsers


Markdent documentation Contained in the Markdent distribution.

Index


Code Index:

NAME

Top

Markdent::Role::AnyParser - A role for block and span parsers

VERSION

Top

version 0.17

DESCRIPTION

Top

This role implements behavior shared by all types of parser.

ATTRIBUTES

Top

This role provides the following attributes:

handler

This is a read-only attribute. It is an object which does the Markdent::Role::Handler role.

This is required for all parsers.

METHODS

Top

$parser->_detab_text(\$text)

This takes a scalar reference to a piece of text that will be outputted and replaces tabs with spaces. This is down after a piece of text is parser for markup.

ROLES

Top

This class does the Markdent::Role::DebugPrinter role.

BUGS

Top

See Markdent for bug reporting details.

AUTHOR

Top

Dave Rolsky <autarch@urth.org>

COPYRIGHT AND LICENSE

Top


Markdent documentation Contained in the Markdent distribution.

package Markdent::Role::AnyParser;
BEGIN {
  $Markdent::Role::AnyParser::VERSION = '0.17';
}

use strict;
use warnings;

use namespace::autoclean;
use Moose::Role;

with 'Markdent::Role::DebugPrinter';

has handler => (
    is       => 'ro',
    does     => 'Markdent::Role::Handler',
    required => 1,
);

sub _send_event {
    my $self = shift;

    $self->handler()->handle_event( $self->_make_event(@_) );
}

sub _make_event {
    my $self  = shift;
    my $class = shift;

    my $real_class = $class =~ /::/ ? $class : 'Markdent::Event::' . $class;

    return $real_class->new(@_);
}

sub _detab_text {
    my $self = shift;
    my $text = shift;

    # Ripped off from Text::Mardkown
    ${$text} =~ s{ ^
                                      (.*?)
                                      \t
                                  }
                                  { $1 . (q{ } x (4 - length($1) % 4))}xmge;

    return;
}

sub _debug_look_for {
    my $self = shift;

    return unless $self->debug();

    my @look_debug = map { ref $_ ? "$_->[0] ($_->[1])" : $_ } @_;

    my $msg = "Looking for the following possible matches:\n";
    $msg .= "  - $_\n" for @look_debug;

    $self->_print_debug($msg);
}

1;

# ABSTRACT: A role for block and span parsers




__END__