* Explode some of the more insane regexps.

master
joey 2007-06-01 23:40:43 +00:00
parent 348a82b7a4
commit 78323806ee
4 changed files with 82 additions and 10 deletions

View File

@ -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.=" &&";

View File

@ -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};
} #}}}

3
debian/changelog vendored
View File

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

View File

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