aboutsummaryrefslogtreecommitdiff
path: root/doc/todo/simple_text_parsing_or_regex_in_template_or_shortcut.mdwn
blob: 3ff8b9ef6d54c67c9bd70c4d9edff3b3234ad7c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Either [[plugins/template]] or [[plugins/shortcut]] should support some form
of very simple text parsing or regex application, to make it possible to write
shortcuts like these:

    [[!mmlist listname@lists.example.org]] -> <listname@example.org> ([mailman page] (http://lists.example.org/mailman/listinfo/listname)
    [[!debcl packagename]] -> [packagename changelog](http://packages.debian.org/changelogs/pool/main/p/packagename/current/changelog)

For shortcut definitions, a `match` parameter could supply a regex, and then the `url` and `desc` parameters could make use of the named or numbered groups from the match.

--[[JoshTriplett]]

I'm not comfortable with exposing regexps to web editing. At the very least
it's trivial to construct regexps that take indefinitely long to match
certain strings, which could be used to DOS ikiwiki. At worst, perl code
can be embedded in regexps in a variety of ways that are painful to filter
out, and perl's regexp engine could also potentially have bugs that could
be exploited by user-supplied regexps.

It seems that a better place to put this kind of text munging is in
special-purpose plugins. It should be very simple to write plugins for the
above two examples, that look identical to the user as what you described.

--[[Joey]]

Fair enough.  I only proposed regexes for the purposes of generality.

That said, some simple text substitution mechanisms might handle many of these
cases without the need for a specialized plugin beyond [[plugins/shortcut]].
For instance, substring extraction would suffice for the `debcl` shortcut, and
something like a split function would work for the `mmlist` shortcut.

--[[JoshTriplett]]