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.