From b1f7c261e199fa273b592d58a6b19dd2c9fe0f6c Mon Sep 17 00:00:00 2001 From: Alex 'AdUser' Z Date: Sun, 5 Jul 2015 13:55:35 +1000 Subject: [PATCH] * Text::Dokuwiki::Regexps : fix 'header' regex --- lib/Text/Dokuwiki/Regexps.pm | 16 ++++++++++++---- t/regexps-misc.t | 22 ++++++++++------------ 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/lib/Text/Dokuwiki/Regexps.pm b/lib/Text/Dokuwiki/Regexps.pm index f28ce1c..4ae3464 100644 --- a/lib/Text/Dokuwiki/Regexps.pm +++ b/lib/Text/Dokuwiki/Regexps.pm @@ -9,11 +9,19 @@ my $EOL = '\r?\n'; my $TAIL = '(?:^\s*$)*'; our $regexps = {}; -$regexps->{header} = qr{ -^ (?
.+ ) $EOL -^ (? [=-]+ ) (?: $EOL | $) +$regexps->{header} = qr/ +(?: + ^ # line start + $SP? # maybe one leading space + (? ={2,6} ) # header marks + \s* # leading spaces + (?
.+? ) # header text + \s* # trailing spaces + (?: \g{line}) # header mark (exactly same as above) + (?: $EOL | $) # newline or file end +) $TAIL -}mx; +/mx; $regexps->{codeblock} = qr% ^ # first line diff --git a/t/regexps-misc.t b/t/regexps-misc.t index ccf7eaa..f044fc8 100644 --- a/t/regexps-misc.t +++ b/t/regexps-misc.t @@ -11,36 +11,34 @@ my $rx = $Text::Dokuwiki::Regexps::regexps; use re 'debugcolor'; my $text = <<'TEXT'; -Header 1st level -================= +====== Header 1st level ====== TEXT my $matched = 'Header 1st level'; my @matches = $text =~ m/$rx->{header}/; is(scalar @matches, 2); +is($+{line}, '======'); is($+{header}, $matched); -is($+{line}, '================='); -is($matches[0], $matched); -is($matches[1], '================='); +is($matches[0], '======'); +is($matches[1], $matched); $text = <<'TEXT'; -Header 2nd level ------------------ +===== Header 2nd level ===== TEXT $matched = 'Header 2nd level'; @matches = $text =~ m/$rx->{header}/; is(scalar @matches, 2); -is($matches[0], $matched); -is($matches[1], '-----------------'); +is($matches[0], '====='); +is($matches[1], $matched); -$text = "Header only\n-------------"; +$text = "==== Header only ===="; $matched = 'Header only'; @matches = $text =~ m/$rx->{header}/; -is($matches[0], $matched); -is($matches[1], '-------------'); +is($matches[0], '===='); +is($matches[1], $matched); $text = <<'TEXT';