Zubrikhin Alexey
10 years ago
1 changed files with 93 additions and 0 deletions
@ -0,0 +1,93 @@
|
||||
package Text::Dokuwiki::Regexps; |
||||
|
||||
use strict; |
||||
use warnings; |
||||
use utf8; |
||||
|
||||
my $SP = '[\ \t]'; |
||||
my $EOL = '\r?\n'; |
||||
our $regexps = {}; |
||||
|
||||
$regexps->{header} = qr{ |
||||
^ (?<header> .+ ) $EOL |
||||
^ (?:<line> [=-]+ )(?: $EOL | $) |
||||
}mx; |
||||
|
||||
$regexps->{codeblock} = qr% |
||||
^ # first line |
||||
$SP? # maybe one leading space |
||||
< # opening tag start |
||||
(?<tag> code | file ) # tag name |
||||
(?: # optional block |
||||
(?: $SP+ (?<syntax>\S+) )? |
||||
(?: $SP+ (?<filename>\S+) ) |
||||
)? |
||||
> # opening tag end |
||||
$SP* # maybe any number of trailing spaces |
||||
$EOL # end of first line |
||||
|
||||
(?<block> # body of block |
||||
(?: |
||||
^ # line start |
||||
.* # contents |
||||
$EOL # line end (note: no $) |
||||
)*? # don't be greedy, other blocks may follow |
||||
) # block body end |
||||
|
||||
^ # last line |
||||
$SP? # maybe one leading space |
||||
</\g{tag}> # the same tag as in first line |
||||
$SP* # maybe any number of trailing spaces |
||||
(?: $EOL | $) # end of last line |
||||
%mx; |
||||
|
||||
$regexps->{table} = qr/ |
||||
(?<table> |
||||
(?: |
||||
^ # line start |
||||
$SP? # maybe one leading space |
||||
[|^] # at next char is '|' (td) or '^' (th) |
||||
.* # rest of line |
||||
[|^] # ends with '|' or '^' |
||||
$SP* # maybe one or more trailing space(s) |
||||
(?: $EOL | $ ) # newline or file end |
||||
)+ # one or more such lines |
||||
) |
||||
/mx; |
||||
|
||||
$regexps->{pre} = qr/ |
||||
(?<block> |
||||
(?: |
||||
^ # line start |
||||
$SP {2} # at least two spaces |
||||
.* # rest of line |
||||
(?: $EOL | $ ) # newline or file end |
||||
)+ # one or more lines |
||||
) |
||||
/mx; |
||||
|
||||
$regexps->{blockquote} = qr/ |
||||
(?<block> |
||||
(?: |
||||
^ # line start |
||||
$SP? # maybe one leading space |
||||
[>]{1,} # quote marker(s) |
||||
.* # rest of line |
||||
(?: $EOL | $ ) # newline or file end |
||||
)+ # one or more lines |
||||
) |
||||
/mx; |
||||
|
||||
$regexps->{list} = qr/ |
||||
(?<list> |
||||
(?: |
||||
^ # line start |
||||
$SP {2,} # two or more spaces |
||||
[*-] # start marker of the list item |
||||
.+ # rest of line |
||||
(?: $EOL | $ ) # newline or file end |
||||
)+ # one or more lines |
||||
) |
||||
/mx; |
||||
|
||||
1; |
Loading…
Reference in new issue