* Explode some of the more insane regexps.
parent
348a82b7a4
commit
78323806ee
66
IkiWiki.pm
66
IkiWiki.pm
|
@ -33,7 +33,21 @@ sub defaultconfig () { #{{{
|
|||
qr/\.x?html?$/, qr/\.ikiwiki-new$/,
|
||||
qr/(^|\/).svn\//, qr/.arch-ids\//, qr/{arch}\//,
|
||||
qr/\.dpkg-tmp$/],
|
||||
wiki_link_regexp => qr/\[\[(?:([^\]\|]+)\|)?([^\s\]#]+)(?:#([^\s\]]+))?\]\]/,
|
||||
wiki_link_regexp => qr{
|
||||
\[\[ # beginning of link
|
||||
(?:
|
||||
([^\]\|]+) # 1: link text
|
||||
\| # followed by '|'
|
||||
)? # optional
|
||||
|
||||
([^\s\]#]+) # 2: page to link to
|
||||
(?:
|
||||
\# # '#', beginning of anchor
|
||||
([^\s\]]+) # 3: anchor text
|
||||
)? # optional
|
||||
|
||||
\]\] # end of link
|
||||
}x,
|
||||
wiki_file_regexp => qr/(^[-[:alnum:]_.:\/+]+$)/,
|
||||
web_commit_regexp => qr/^web commit (by (.*?(?=: |$))|from (\d+\.\d+\.\d+\.\d+)):?(.*)/,
|
||||
verbose => 0,
|
||||
|
@ -599,7 +613,17 @@ sub preprocess ($$$;$$) { #{{{
|
|||
# Note: preserve order of params, some plugins may
|
||||
# consider it significant.
|
||||
my @params;
|
||||
while ($params =~ /(?:(\w+)=)?(?:"""(.*?)"""|"([^"]+)"|(\S+))(?:\s+|$)/sg) {
|
||||
while ($params =~ m{
|
||||
(?:(\w+)=)? # 1: named parameter key?
|
||||
(?:
|
||||
"""(.*?)""" # 2: triple-quoted value
|
||||
|
|
||||
"([^"]+)" # 3: single-quoted value
|
||||
|
|
||||
(\S+) # 4: unquoted value
|
||||
)
|
||||
(?:\s+|$) # delimiter to next param
|
||||
}sgx) {
|
||||
my $key=$1;
|
||||
my $val;
|
||||
if (defined $2) {
|
||||
|
@ -647,7 +671,27 @@ sub preprocess ($$$;$$) { #{{{
|
|||
}
|
||||
};
|
||||
|
||||
$content =~ s{(\\?)\[\[(\w+)\s+((?:(?:\w+=)?(?:""".*?"""|"[^"]+"|[^\s\]]+)\s*)*)\]\]}{$handle->($1, $2, $3)}seg;
|
||||
$content =~ s{
|
||||
(\\?) # 1: escape?
|
||||
\[\[ # directive open
|
||||
(\w+) # 2: command
|
||||
\s+
|
||||
( # 3: the parameters..
|
||||
(?:
|
||||
(?:\w+=)? # named parameter key?
|
||||
(?:
|
||||
""".*?""" # triple-quoted value
|
||||
|
|
||||
"[^"]+" # single-quoted value
|
||||
|
|
||||
[^\s\]]+ # unquoted value
|
||||
)
|
||||
\s* # whitespace or end
|
||||
# of directive
|
||||
)
|
||||
*) # 0 or more parameters
|
||||
\]\] # directive closed
|
||||
}{$handle->($1, $2, $3)}sexg;
|
||||
return $content;
|
||||
} #}}}
|
||||
|
||||
|
@ -977,7 +1021,21 @@ sub pagespec_translate ($) { #{{{
|
|||
|
||||
# Convert spec to perl code.
|
||||
my $code="";
|
||||
while ($spec=~m/\s*(\!|\(|\)|\w+\([^\)]+\)|[^\s()]+)\s*/ig) {
|
||||
while ($spec=~m{
|
||||
\s* # ignore whitespace
|
||||
( # 1: match a single word
|
||||
\! # !
|
||||
|
|
||||
\( # (
|
||||
|
|
||||
\) # )
|
||||
|
|
||||
\w+\([^\)]+\) # command(params)
|
||||
|
|
||||
[^\s()]+ # any other text
|
||||
)
|
||||
\s* # ignore whitespace
|
||||
}igx) {
|
||||
my $word=$1;
|
||||
if (lc $word eq "and") {
|
||||
$code.=" &&";
|
||||
|
|
|
@ -15,7 +15,20 @@ sub filter (@) { #{{{
|
|||
|
||||
# Make CamelCase links work by promoting them to fullfledged
|
||||
# WikiLinks. This regexp is based on the one in Text::WikiFormat.
|
||||
$params{content}=~s#(?<![[|"/>=])\b((?:[A-Z][a-z0-9]\w*){2,})#[[$1]]#g;
|
||||
$params{content}=~s{
|
||||
(?<![[|"/>=]) # try to avoid expanding non-links
|
||||
# with a zero width negative lookbehind for
|
||||
# characters that suggest it's not a link
|
||||
\b # word boundry
|
||||
(
|
||||
(?:
|
||||
[A-Z] # Uppercase start
|
||||
[a-z0-9] # followed by lowercase
|
||||
\w* # and rest of word
|
||||
)
|
||||
{2,} # repeated twice
|
||||
)
|
||||
}{[[$1]]}gx;
|
||||
|
||||
return $params{content};
|
||||
} #}}}
|
||||
|
|
|
@ -30,8 +30,9 @@ ikiwiki (2.2) UNRELEASED; urgency=low
|
|||
* Correct some issues with display of unhandled preprocessor directives.
|
||||
* Apply a patch from Carl Worth adding support for using globs in link()
|
||||
in a PageSpec.
|
||||
* Explode some of the more insane regexps.
|
||||
|
||||
-- Joey Hess <joeyh@debian.org> Mon, 28 May 2007 21:56:11 -0400
|
||||
-- Joey Hess <joeyh@debian.org> Fri, 01 Jun 2007 19:39:38 -0400
|
||||
|
||||
ikiwiki (2.1) unstable; urgency=low
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2007-05-30 15:53-0400\n"
|
||||
"POT-Creation-Date: 2007-06-01 19:35-0400\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -563,11 +563,11 @@ msgstr ""
|
|||
msgid "usage: ikiwiki [options] source dest"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki.pm:108
|
||||
#: ../IkiWiki.pm:122
|
||||
msgid "Must specify url to wiki with --url when using --cgi"
|
||||
msgstr ""
|
||||
|
||||
#: ../IkiWiki.pm:155 ../IkiWiki.pm:156
|
||||
#: ../IkiWiki.pm:169 ../IkiWiki.pm:170
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
|
@ -575,7 +575,7 @@ msgstr ""
|
|||
#. translators: preprocessor directive name,
|
||||
#. translators: the second a page name, the
|
||||
#. translators: third a number.
|
||||
#: ../IkiWiki.pm:632
|
||||
#: ../IkiWiki.pm:656
|
||||
#, perl-format
|
||||
msgid "%s preprocessing loop detected on %s at depth %i"
|
||||
msgstr ""
|
||||
|
|
Loading…
Reference in New Issue