* 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/\.x?html?$/, qr/\.ikiwiki-new$/,
|
||||||
qr/(^|\/).svn\//, qr/.arch-ids\//, qr/{arch}\//,
|
qr/(^|\/).svn\//, qr/.arch-ids\//, qr/{arch}\//,
|
||||||
qr/\.dpkg-tmp$/],
|
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:]_.:\/+]+$)/,
|
wiki_file_regexp => qr/(^[-[:alnum:]_.:\/+]+$)/,
|
||||||
web_commit_regexp => qr/^web commit (by (.*?(?=: |$))|from (\d+\.\d+\.\d+\.\d+)):?(.*)/,
|
web_commit_regexp => qr/^web commit (by (.*?(?=: |$))|from (\d+\.\d+\.\d+\.\d+)):?(.*)/,
|
||||||
verbose => 0,
|
verbose => 0,
|
||||||
|
@ -599,7 +613,17 @@ sub preprocess ($$$;$$) { #{{{
|
||||||
# Note: preserve order of params, some plugins may
|
# Note: preserve order of params, some plugins may
|
||||||
# consider it significant.
|
# consider it significant.
|
||||||
my @params;
|
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 $key=$1;
|
||||||
my $val;
|
my $val;
|
||||||
if (defined $2) {
|
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;
|
return $content;
|
||||||
} #}}}
|
} #}}}
|
||||||
|
|
||||||
|
@ -977,7 +1021,21 @@ sub pagespec_translate ($) { #{{{
|
||||||
|
|
||||||
# Convert spec to perl code.
|
# Convert spec to perl code.
|
||||||
my $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;
|
my $word=$1;
|
||||||
if (lc $word eq "and") {
|
if (lc $word eq "and") {
|
||||||
$code.=" &&";
|
$code.=" &&";
|
||||||
|
|
|
@ -15,7 +15,20 @@ sub filter (@) { #{{{
|
||||||
|
|
||||||
# Make CamelCase links work by promoting them to fullfledged
|
# Make CamelCase links work by promoting them to fullfledged
|
||||||
# WikiLinks. This regexp is based on the one in Text::WikiFormat.
|
# 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};
|
return $params{content};
|
||||||
} #}}}
|
} #}}}
|
||||||
|
|
|
@ -30,8 +30,9 @@ ikiwiki (2.2) UNRELEASED; urgency=low
|
||||||
* Correct some issues with display of unhandled preprocessor directives.
|
* Correct some issues with display of unhandled preprocessor directives.
|
||||||
* Apply a patch from Carl Worth adding support for using globs in link()
|
* Apply a patch from Carl Worth adding support for using globs in link()
|
||||||
in a PageSpec.
|
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
|
ikiwiki (2.1) unstable; urgency=low
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \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"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -563,11 +563,11 @@ msgstr ""
|
||||||
msgid "usage: ikiwiki [options] source dest"
|
msgid "usage: ikiwiki [options] source dest"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki.pm:108
|
#: ../IkiWiki.pm:122
|
||||||
msgid "Must specify url to wiki with --url when using --cgi"
|
msgid "Must specify url to wiki with --url when using --cgi"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki.pm:155 ../IkiWiki.pm:156
|
#: ../IkiWiki.pm:169 ../IkiWiki.pm:170
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -575,7 +575,7 @@ msgstr ""
|
||||||
#. translators: preprocessor directive name,
|
#. translators: preprocessor directive name,
|
||||||
#. translators: the second a page name, the
|
#. translators: the second a page name, the
|
||||||
#. translators: third a number.
|
#. translators: third a number.
|
||||||
#: ../IkiWiki.pm:632
|
#: ../IkiWiki.pm:656
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "%s preprocessing loop detected on %s at depth %i"
|
msgid "%s preprocessing loop detected on %s at depth %i"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
Loading…
Reference in New Issue