|
|
|
@ -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 |
|
|
|
|