0.10.0 2020-06-09 - Reducing the number of parentheses in produced SQL statements. Introducing an option to flatten homogeneous AND/OR subtrees. 0.9.0 2020-05-05 - Introducing interface OPTIMADE::Filter::Modifiable which is used to detect objects that could be modified using modify(). - Overriding equality operators for OPTIMADE::Filter::Property. 0.8.0 2020-03-25 - Renaming package from OPTiMaDe::Filter to OPTIMADE::Filter. - Allowing uppercase characters in properties, however, they are lowercased prior to filter string generation. 0.7.3 2020-03-09 - Implementing the validation of property's syntax. 0.7.2 2020-03-01 - Readding tests. 0.7.1 2020-02-25 - Switching from ExtUtils::MakeMaker to Module::Build-based build system thus making the build process more portable. 0.7.0 2020-01-12 - Acknowledging conformance to OPTiMaDe specification v1.0.0-rc.1. - Validating objects prior to generating their representations in order not to produce erroneous representations. - Fixing the build system as it did not build the Yapp parser properly. - Adding repository metadata (thanks Mohammad S Anwar). 0.6.1 2020-01-30 - Fixing the build system to create source-only tarballs, and to build the parser via 'perl Makefile.PL && make'. 0.6.0 2019-12-12 - Changing the syntax of 'LENGTH' comparison as per Materials-Consortia/OPTiMaDe#221. 0.5.0 2019-12-09 - Renaming package from OPTiMaDe::FilterParser to OPTiMaDe::Filter. - Implementing right-hand side properties as per Materials-Consortia/OPTiMaDe#178. - Properties of three or more identifiers have no SQL representation. - Replacing OPTiMaDe::Filter::Comparison::set_operator() with operator(). - Replacing OPTiMaDe::Filter::ListComparison::set_<attribute>() with <attribute>(). - Replacing OPTiMaDe::Filter::Zip::set_<attribute>() with <attribute>(). 0.4.1 2019-12-05 - Fixing SQL placeholders for fuzzy search of strings. 0.4.0 2019-12-05 - Adding overloads for OPTiMaDe::FilterParser::Property. Replacing push_identifier() via direct push to object. - Adding convenience methods left() and right() for OPTiMaDe::FilterParser::Comparison. - Introducing classes OPTiMaDe::FilterParser::Negation, OPTiMaDe::FilterParser::AndOr and OPTiMaDe::FilterParser::Known. - Changing the way the delimiter is passed to to_SQL() methods. - Implementing SQL output with placeholders instead of values. 0.3.0 2019-08-19 - Introducing method modify(), which traverses and modifies the built filter tree. - Modifying the constructor for OPTiMaDe::FilterParser::Property. - Adding 'Changes' (this file) to MANIFEST. 0.2.0 2019-08-12 - Combining 'IS' and 'KNOWN'/'UNKNOWN' lexems together. - Fixing 'IS KNOWN'/'IS UNKNOWN' translation to SQL. - Implementing backwards translation to the string representation. - Unifying layout of parsed lists. - Adding roundtrip tests. 0.1.0 2019-07-20 - Initial release.