Text::Markdown::Discount
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

178 lines
4.3 KiB

package Text::Markdown::Discount;
use 5.008000;
use strict;
use warnings;
require Exporter;
our @ISA = qw(Exporter);
# Items to export into callers namespace by default. Note: do not export
# names by default without a very good reason. Use EXPORT_OK instead.
# Do not simply export all your public functions/methods/constants.
# This allows declaration use Text::Markdown::XS ':all';
# If you do not need this, moving things directly into @EXPORT or @EXPORT_OK
# will save memory.
our %EXPORT_TAGS = ( 'all' => [ qw(
markdown
) ] );
our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
our @EXPORT = qw(
);
our $VERSION = '0.11';
require XSLoader;
XSLoader::load('Text::Markdown::Discount', $VERSION);
sub new {
return bless {}, 'Text::Markdown::Discount';
}
sub markdown {
my ($self, $text, $flags) = @_;
# Detect functional mode, and create an instance for this run..
unless (ref $self) {
if ( $self ne __PACKAGE__ ) {
my $ob = __PACKAGE__->new();
# $self is text, $text is options
return $ob->markdown($self, $text, $flags);
}
else {
croak('Calling ' . $self . '->markdown (as a class method) is not supported.');
}
}
if (not defined $flags) {
$flags = MKD_NOHEADER()|MKD_NOPANTS();
}
return _markdown($text, $flags);
}
1;
__END__
# Below is stub documentation for your module. You'd better edit it!
=head1 NAME
Text::Markdown::Discount - fast function for converting markdown to HTML (requires C compiler)
=head1 SYNOPSIS
use Text::Markdown::Discount;
my $html = markdown($text)
=head1 DESCRIPTION
Text::Markdown::Discount is a perl interface to the C<Discount> library,
a C implementation of John Gruber's C<markdown>.
It is the fastest of the
Perl modules available for converting markdown: see the list in L<"SEE ALSO">.
It passes Gruber's Markdown testsuite.
Given that the performance of Discount, Text::Markdown::Discount processes
markdown formatted text quickly and passes the Markdown test suite at
The interface of the C<markdown()> function in this module
is not compatible with the C<markdown()> function in L<Text::Markdown>.
=head2 EXPORT
I<markdown> is exported by default.
=head2 FUNCTION
=over
=item C<Text::Markdown::Discount::with_html5_tags()>
This function enables html5 block-level elements support.
C<< Text::Markdown::Discount::markdown() >> will handle these html5 tags as
block elements: aside, footer, header, hgroup, nav, section, article.
B<NOTE>: There is no way to disable/re-enable this feature in one process right now.
use Text::Markdown::Discount;
Text::Markdown::Discount::with_html5_tags();
my $html = markdown('<article>content</article>');
#
# In $html, <article> tag won't be wrapped with <p> tag
=back
=head1 SEE ALSO
There are other modules on CPAN for converting Markdown:
=over 4
=item *
L<Text::Markdown> is a pure-perl markdown converter.
=item *
L<Markdent> is a toolkit for parsing markdown,
which can also be used to convert markdown to HTML.
=item *
L<Text::Markup> is a converter than can handle a number of input formats, including markdown.
=item *
L<Text::MultiMarkdown> converts MultiMarkdown (a superset of the original markdown format)
to HTML.
=back
Additional markdown resources:
=over 4
=item *
L<Discount|http://www.pell.portland.or.us/~orc/Code/markdown/> -
David Loren Parsons's library for converting markdown, written in C.
=item *
L<Markdown definition|http://daringfireball.net/projects/markdown/> -
John Gruber's original definition of the markdown format.
=item *
L<Markdown testsuite|http://daringfireball.net/projects/downloads/MarkdownTest_1.0.zip> -
John Gruber's testsuite for markdown.
=item *
L<Markdown modules|http://neilb.org/reviews/markdown.html> - a review
of all Perl modules for handling markdown, written by Neil Bowers.
=back
=head1 AUTHOR
Masayoshi Sekimura, E<lt>sekimura@cpan.orgE<gt>
=head1 COPYRIGHT AND LICENSE
Copyright (C) 2013 by Masayoshi Sekimura
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.10.0 or,
at your option, any later version of Perl 5 you may have available.
This product includes software developed by
David Loren Parsons <http://www.pell.portland.or.us/~orc>
=cut