Revision history for Perl extension RiveScript. 1.19 Apr 12 2009 - Added support for defining custom object handlers for non-Perl programming languages. - All the methods like setGlobal, setVariable, setUservar, etc. will now accept undef or "" as values - this will delete the variables. - There are no reserved global variable names anymore. Now, if a variable name would conflict with a reserved name, it is put into a "protected" space elsewhere in the object. Still take note of which names are reserved though. 1.18 Dec 31 2008 - Added support for topics to inherit their triggers from other topics. e.g. > topic alpha inherits beta - Fixed some bugs related to !array with ^continue's, and expanded its functionality therein. - Updated the getUservars() function to optionally be able to get just a specific variable from the user's data. Added getUservar() as a grammatically correct alias to this new functionality. - Added the functions freezeUservars() and thawUservars() to back up and restore a user's variables. - Added the function lastMatch(), which returns the text of the trigger that matched the user's last message. - The # command for RiveScript comments has been deprecated in revision 7 of the RiveScript Working Draft. The Perl module will now emit warnings each time the # comments are processed. - Modified a couple of triggers in the default Eliza brain to improve matching issues therein. - +Triggers can contain user tags now. - Updated the RiveScript Working Draft. 1.17 Sep 15 2008 - Updated the rsdemo tool to be more flexible as a general debugging and developing program. Also updated rsdemo and rsup to include POD documentation that can be read via `perldoc`. - Added a global variable $RiveScript::basedir which is the the path to your Perl lib/RiveScript folder. This is used by `rsdemo` as its default location to search for replies. - Tweak: Triggers of only # and _ can exist now alongside the old single-wildcard trigger of *. - Bugfix: The lookahead code would throw Perl warnings if the following line had a single space in it, but was otherwise empty. - Bugfix: Inline comment removing has been fixed. - Bugfix: In conditionals, any blank side of the equality will get a default value of "undefined". This way you can use a matching array inside an optional and check if that tag is defined. + i am wearing a [(@colors)] shirt * ne undefined => Why are you wearing a shirt? - What color is it? - Updated the RiveScript Working Draft. 1.16 Jul 22 2008 - New options to the constructor: 'verbose' and 'debugfile'. See the new() constructor for details. - Added new wildcard variants: * matches anything (previous behavior) # matches only numbers _ matches only letters So you can have a trigger like "+ i am # years old" and "+ i am * years old", with the latter trigger telling them to try that again and use a NUMBER this time. :) - Bugfix: when there were multiple +trigger's that had a common %previous, there was no internal sort buffer for those +trigger's. As a result, matching wasn't very efficient. Added the method sortThatTriggers() to fix this. - Bugfix: tags weren't being processed in @Redirects when they really should've! - Bugfix: The ^Continue lookahead code wouldn't work if the next line began with a tab. Fixed! - Updated the RiveScript Working Draft. 1.15 Jun 19 2008 - Person substitutions support multiple-word patterns now. - Message substititons also support multiple-word patterns now. - Added syntax tracking, so Deep Recursion errors can give you a filename and line number where the problem occurred. - Added a handler for detecting when a user was put into an empty topic. - Rearranged tag priority. - Updated the RiveScript Working Draft. 1.14 Apr 2 2008 - Bugfix: If a BEGIN/request trigger didn't exist, RiveScript would not fetch any replies for the client's message. Fixed. - Bugfix: Tags weren't being re-processed for the text of the BEGIN statement, so i.e. {uppercase}{ok}{/uppercase} wasn't working as expected. Fixed. - Bugfix: RiveScript wasn't parsing out inline comments properly. - Rearranged tag priorities. - Optimization: When substituting s in, an added bit of code will insert '' (nothing) if the variable is undefined. This prevents Perl warnings that occurred frequently with the Eliza brain. - Updated the RiveScript Working Draft. 1.13 Mar 18 2008 - Included an "rsup" script for upgrading old RiveScript code. - Attempted to fix the package for CPAN (1.12 was a broken upload). - Bugfix: didn't have higher priority than , so i.e. > wouldn't work as expected. Fixed. 1.12 Mar 16 2008 - Initial beta release for a RiveScript 2.00 parser.