|
|
|
@ -36,7 +36,7 @@ my $g_nested_brackets;
|
|
|
|
|
$g_nested_brackets = qr{
|
|
|
|
|
(?> # Atomic matching
|
|
|
|
|
[^\[\]]+ # Anything other than brackets
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\[
|
|
|
|
|
(??{ $g_nested_brackets }) # Recursive set of nested brackets
|
|
|
|
|
\]
|
|
|
|
@ -125,7 +125,7 @@ unless ($@) {
|
|
|
|
|
my $ctx = shift;
|
|
|
|
|
my $raw = 0;
|
|
|
|
|
if (defined $ctx) {
|
|
|
|
|
my $output = $ctx->stash('markdown_output');
|
|
|
|
|
my $output = $ctx->stash('markdown_output');
|
|
|
|
|
if (defined $output && $output =~ m/^html/i) {
|
|
|
|
|
$g_empty_element_suffix = ">";
|
|
|
|
|
$ctx->stash('markdown_output', '');
|
|
|
|
@ -160,7 +160,7 @@ unless ($@) {
|
|
|
|
|
my $text = shift;
|
|
|
|
|
my $ctx = shift;
|
|
|
|
|
if (defined $ctx) {
|
|
|
|
|
my $output = $ctx->stash('markdown_output');
|
|
|
|
|
my $output = $ctx->stash('markdown_output');
|
|
|
|
|
if (defined $output && $output eq 'html') {
|
|
|
|
|
$g_empty_element_suffix = ">";
|
|
|
|
|
}
|
|
|
|
@ -647,7 +647,7 @@ sub _HashHTMLBlocks {
|
|
|
|
|
"\n\n" . $key . "\n\n";
|
|
|
|
|
}egmx;
|
|
|
|
|
# Special case just for <hr />. It was easier to make a special case than
|
|
|
|
|
# to make the other regex more complicated.
|
|
|
|
|
# to make the other regex more complicated.
|
|
|
|
|
$text =~ s{
|
|
|
|
|
(?:
|
|
|
|
|
(?<=\n\n) # Starting after a blank line
|
|
|
|
@ -658,7 +658,7 @@ sub _HashHTMLBlocks {
|
|
|
|
|
[ ]{0,$less_than_tab}
|
|
|
|
|
<(hr) # start tag = $2
|
|
|
|
|
\b # word break
|
|
|
|
|
([^<>])*? #
|
|
|
|
|
([^<>])*? #
|
|
|
|
|
/?> # the matching end tag
|
|
|
|
|
[ \t]*
|
|
|
|
|
(?=\n{2,}|\Z) # followed by a blank line or end of document
|
|
|
|
@ -998,7 +998,7 @@ sub _DoHeaders {
|
|
|
|
|
# Setext-style headers:
|
|
|
|
|
# Header 1
|
|
|
|
|
# ========
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
# Header 2
|
|
|
|
|
# --------
|
|
|
|
|
#
|
|
|
|
@ -1193,7 +1193,7 @@ sub _ProcessListItems {
|
|
|
|
|
sub _DoCodeBlocks {
|
|
|
|
|
#
|
|
|
|
|
# Process Markdown `<pre><code>` blocks.
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
my $text = shift;
|
|
|
|
|
|
|
|
|
@ -1227,26 +1227,26 @@ sub _DoCodeBlocks {
|
|
|
|
|
sub _DoCodeSpans {
|
|
|
|
|
#
|
|
|
|
|
# * Backtick quotes are used for <code></code> spans.
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
# * You can use multiple backticks as the delimiters if you want to
|
|
|
|
|
# include literal backticks in the code span. So, this input:
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
# Just type ``foo `bar` baz`` at the prompt.
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
# Will translate to:
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
# <p>Just type <code>foo `bar` baz</code> at the prompt.</p>
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
# There's no arbitrary limit to the number of backticks you
|
|
|
|
|
# can use as delimters. If you need three consecutive backticks
|
|
|
|
|
# in your code, use four for delimiters, etc.
|
|
|
|
|
#
|
|
|
|
|
# * You can use spaces to get literal backticks at the edges:
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
# ... type `` `bar` `` ...
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
# Turns to:
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
# ... type <code>`bar`</code> ...
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
@ -1287,7 +1287,7 @@ sub _EncodeCode {
|
|
|
|
|
{
|
|
|
|
|
no warnings 'once';
|
|
|
|
|
if (defined($blosxom::version)) {
|
|
|
|
|
s/\$/$/g;
|
|
|
|
|
s/\$/$/g;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1693,8 +1693,8 @@ See the readme file for detailed release notes for this version.
|
|
|
|
|
|
|
|
|
|
=head1 COPYRIGHT AND LICENSE
|
|
|
|
|
|
|
|
|
|
Copyright (c) 2003-2004 John Gruber
|
|
|
|
|
<http://daringfireball.net/>
|
|
|
|
|
Copyright (c) 2003-2004 John Gruber
|
|
|
|
|
<http://daringfireball.net/>
|
|
|
|
|
All rights reserved.
|
|
|
|
|
|
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
|
|
|