Changelog: ========== * (git HEAD) -- Version 1.1 - '#regex' in replace mode with 'e' flag doesn't require escaped replacement string anymore. Instead of something like "{{((}}#if:$2{{!}}$2{{!}}$1{{))}}", "{{#if:$2|$2|$1}}" can be used. - '#regex' with 'e' flag now first escapes matches before putting them into the back-references and expanding them. Therefore a new configuration variable '$egRegexFunExpansionEscapeTemplates' has been introduced which serves as a workaround for MW bug #32829. - '#regex_var' stored variables are now working in a frame-based scope. '#regex' used on a site or template followed by a template call using '#regex' as well with '#regex_var after that template call will now access the variable from the '#regex' within the same page/template. - Changes in ExtRegexFun::doPregReplace(). Other extensions using this might have to adjust usage. - Dropped compatibility with MediaWiki below 1.17 - Added extensive parser tests. * December 5, 2011 -- Version 1.0.2 - Limit won't exceed early when 'e' flag with many backrefs in replacement is used extensivelly. - It's possible to use the 'Regex Fun' regex system with advanced flags within other extensions. - Performance increased for executing huge numbers of the same regex on different strings. - Internal representative functions for parser functions now have a 'pf_' prefix. * November 6, 2011 -- Version 1.0.1 - Bug in '#regex_var' solved: default value now gets returned in case '#regex' went wrong or not called before. - '#regexall' last parameter, 'length', can be empty '' which is the specified default now. It simply means there is no limit and all items should be returned ('-1' has another meaning). - Introduces two global configuration variables: + '$egRegexFunDisabledFunctions' - to disable certain functions within the wiki. + '$egRegexFunMaxRegexPerParse' - limit for number of function calls per parser process. - Some minor cleanup done. * November 4, 2011 -- Version 1.0 (initial public release). Introduces the following parser functions defined within 'ExtRegexFun' class: - #regex - #regexall - #regex_var - #regexquote Main features: - Searching within strings, using regular expression. - Replacing within strings, using regular expression. - Allows save use of user input within expressions by running '#regexquote' parser function over it. An important function other regex extensions still lack. - Allows to get the last '#regex' sub-expression matches via '#regex_var', even allows to get them in an extensive way, e.g. "$0 has $2, $1 and $3". - Invalid regex will result in an inline error message instead of php notice as some other regex extensions might do it. - Efficient regex validation allowing all kinds of delimiters and flags but filtering 'e' flag for security reasons in any case... - ... therefore, original 'e' flag instead has another but very similar meaning adjusted for a MediaWiki context. Instead of executing php code within the replacement string, the 'e' flag now causes the replacement string to be parsed after references ('$1', '\1') are replaced. This allows stuff like "{{((}}Template{{!}}$1{{))}}" within the replacement. Changes since earlier versions (trunk and earlier, non-public): - '#regexsearch' parser function removed. Instead there is a special flag 'r' now which leads to the same result if #regex and replacement is being used: '' as output if nothing replaced. - '#regexascii' parser function removed. Instead '#regexquote' will ascii-quote MW special characters ';' and '#' if they are first character in the string. - '#regexquote' delimiter set to '/' by default. - '#regex' no longer returns its value as parsed wikitext (option 'noparse' => false) instead the 'e' flag can be used (although not exactly the same). - contributed under ISC License, maintained in wikimedia.org svn.