]> sipb.mit.edu Git - ikiwiki.git/blobdiff - doc/bugs/pagespec_can__39__t_match___123__curly__125___braces.mdwn
minor: formatting.
[ikiwiki.git] / doc / bugs / pagespec_can__39__t_match___123__curly__125___braces.mdwn
index 263950a1d66c6620bc7dec15676fcf6fda5656de..2f215d29779e52aa11941c09a746d5da1e0ae284 100644 (file)
@@ -1,9 +1,42 @@
 I want match pages which have actually curly braces in the names (like this one), but this matches a lot of pages without the braces in their names :( :
 
 I want match pages which have actually curly braces in the names (like this one), but this matches a lot of pages without the braces in their names :( :
 
-[[!map pages="*_{*}_*"]]
+[[!inline show="3" feeds="no" archive="yes" pages="*_{*}_*"]]
+
+(note: the inline above has been restricted to 3 matches to keep this page
+concise. Hopefully it is still clear that this page is not in the output set,
+and the 3 pages in the output set do not contain curly braces in their
+titles).
 
 When escaped, it doesn't work at all:
 
 
 When escaped, it doesn't work at all:
 
-[[!map pages="*_\{*}_*"]]
+[[!inline show="3" feeds="no" archive="yes" pages="*_\{*}_*"]]
+
+[[!inline show="3" feeds="no" archive="yes" pages="*_{*\}_*"]]
+
+More tests:
+
+"\*{\*":
+
+[[!inline show="3" feeds="no" archive="yes" pages="*{*"]]
+
+"\*\\{\*":
+
+[[!inline show="3" feeds="no" archive="yes" pages="*\{*"]]
 
 
-[[!map pages="*_{*\}_*"]]
+> This is due to the current handling of quoting and escaping issues
+> when converting a pagespec to perl code. `safequote` is used to
+> safely quote an input string as a `q{}` quote, and it strips
+> curlies when doing so to avoid one being used to break out of the `q{}`.
+> 
+> Alternative ways to handle it would be:
+>
+> * Escape curlies. But then you have to deal with backslashes
+>   in the user's input as they could try to defeat your escaping.
+>   Gets tricky.
+>
+> * Avoid exposing user input to interpolation as a string. One
+>   way that comes to mind is to have a local string lookup hash,
+>   and insert each user specified string into it, then use the hash
+>   to lookup the specified strings at runtime. [[done]]
+> 
+> --[[Joey]]