| Markdent documentation | Contained in the Markdent distribution. |
Markdent::Role::AnyParser - A role for block and span parsers
version 0.17
This role implements behavior shared by all types of parser.
This role provides the following attributes:
This is a read-only attribute. It is an object which does the Markdent::Role::Handler role.
This is required for all parsers.
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.
This class does the Markdent::Role::DebugPrinter role.
See Markdent for bug reporting details.
Dave Rolsky <autarch@urth.org>
This software is copyright (c) 2010 by Dave Rolsky.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
| 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__