= 3.0.0 / 2014-03-14 * Moved Object#grammar to citrus/core_ext.rb. Citrus no longer installs core extensions by default. Use "require 'citrus/core_ext.rb'" instead of "require 'citrus'" to keep the previous behavior. = 2.5.0 / 2014-03-13 * Inputs may be generated from many different sources, including Pathname and IO objects (thanks blambeau). * Matches keep track of their offset in the original source (thanks blambeau). * Citrus.load no longer raises Citrus::LoadError for files that can't be found or are not readable. Users must rescue Errno::ENOENT instead, for example. * Removed a few ruby warnings (thanks tbuehlmann) = 2.4.1 / 2011-11-04 * Fixed a bug that prevented rule names from starting with "super". * Several minor bug fixes. = 2.4.0 / 2011-05-11 * Fixed a bug that prevented parsing nested blocks correctly (issue #21). * Added URI example. * Moved example grammars inside lib/citrus/grammars and added lib/citrus/grammars.rb for easily requiring Citrus example grammars. = 2.3.7 / 2011-02-20 * Fixed a bug that prevented forward slashes from being used inside character class literals. * Added email address example. = 2.3.6 / 2011-02-19 * Fixed a bug that prevented memoization from advancing the input's pointer properly (thanks joachimm). * Several additions to the TextMate bundle (thanks joachimm). = 2.3.5 / 2011-02-07 * Fixed a bug that prevented Match objects from being printed properly using Kernel#puts (thanks joachimm). * Fixed a bug that prevented using rules with names that begin with "end" (thanks Mark Wilden). * Citrus#require accepts relative file paths, in addition to absolute ones. * Simplified/cleaned up some example files. = 2.3.4 / 2011-01-17 * Added CHANGES file. = 2.3.3 / 2011-01-17 * Added self to Match#captures hash. This means that a Match may retrieve a reference to itself by using its own label, proxy name, or index 0 in the hash. * Match#captures returns an empty array for unknown Symbol keys, coerces String keys to Symbols, and returns nil for unknown Numeric keys. * Moved Citrus::VERSION to its own file. * Citrus::LoadError is raised when Citrus is unable to load a file from the file system because it cannot be found or it is not readable. * Citrus::SyntaxError is raised when Citrus::File is unable to parse some Citrus syntax. * Added Citrus.require for requiring .citrus grammar files in a similar way to Ruby's Kernel.require. Also, overloaded the require operator in Citrus grammar files to failover to Citrus.require when Kernel.require raises a LoadError. * Improved UTF-8 support.