Grex Versions Save

A command-line tool and Rust library with Python bindings for generating regular expressions from user-provided test cases

v1.4.5

2 months ago

Improvements

  • Type stubs for the Python bindings are now available, allowing better static code analysis, better code completion in supported IDEs and easier understanding of the library's API.
  • The code for creating regular expressions in verbose mode has been simplified and is more performant now.
  • ARM64 binaries are now provided for every major platform (Linux, macOs, Windows).

Bug Fixes

  • For a small set of special characters, grex produced incorrect regular expressions when the case-insensitivity feature was enabled. This has been fixed.

Changes

  • All dependencies have been updated to their latest versions.

v1.4.4

8 months ago

Bug Fixes

  • The Python release workflow was incorrect as it produced too many wheels for upload. This has been fixed.

v1.4.3

8 months ago

Features

  • Python bindings are now available for the library. Use grex within any Python software. (#172)

Changes

  • All dependencies have been updated to their latest versions.

v1.4.2

9 months ago

Improvements

  • All characters from the current Unicode standard 15.0 are now fully supported. (#128)
  • A proper exit code is now returned if the provided user input cannot be handled by the CLI. Big thanks to @spenserblack for the respective pull request. (#165)

Changes

  • It is not possible anymore to call RegExpBuilder.with_syntax_highlighting() in the library as it only makes sense for the CLI.
  • The dependency atty has been removed in favor of std::io::IsTerminal in Rust >= 1.70.0. As a result, Rust >= 1.70.0 is now needed to compile the CLI.
  • All remaining dependencies have been updated to their latest versions.

Bug Fixes

  • Several bugs have been fixed that caused incorrect expressions to be generated in rare cases.

v1.4.1

1 year ago

Changes

  • clap has been updated to version 4.0. The help output of grex -h now looks a little different.

Bug Fixes

  • A bug in the grapheme segmentation was fixed that caused test cases which contain backslashes to produce incorrect regular expressions.

v1.4.0

1 year ago

Features

  • The library can now be compiled to WebAssembly and be used in any JavaScript project. (#82)
  • The supported character set for regular expression generation has been updated to the current Unicode Standard 14.0.
  • structopt has been replaced with clap providing much nicer help output for the command-line tool.

Improvements

  • The regular expression generation performance has been significantly improved, especially for generating very long expressions from a large set of test cases. This has been accomplished by reducing the number of memory allocations, removing deprecated code and applying several minor optimizations.

Bug Fixes

  • Several bugs have been fixed that caused incorrect expressions to be generated in rare cases.

v1.3.0

2 years ago

Features

  • anchors can now be disabled so that the generated expression can be used as part of a larger one (#30)
  • the command-line tool can now be used within Unix pipelines (#45)

Changes

  • Additional methods have been added to RegExpBuilder in order to replace the enum Feature and make the library API more consistent. (#47)

Bug Fixes

  • Under rare circumstances, the conversion of repetitions did not work. This has been fixed. (#36)

v1.2.0

3 years ago

Features

  • verbose mode is now supported with the --verbose flag to produce regular expressions which are easier to read (#17)

v1.1.0

4 years ago

Features

  • case-insensitive matching regexes are now supported with the --ignore-case command-line flag or with Feature::CaseInsensitivity in the library (#23)
  • non-capturing groups are now the default; capturing groups can be enabled with the --capture-groups command-line flag or with Feature::CapturingGroup in the library (#15)
  • a lower bound for the conversion of repeated substrings can now be set by specifying --min-repetitions and --min-substring-length or using the library methods RegExpBuilder.with_minimum_repetitions() and RegExpBuilder.with_minimum_substring_length() (#10)
  • test cases can now be passed from a file within the library as well using RegExpBuilder::from_file() (#13)

Changes

  • the rules for the conversion of test cases to shorthand character classes have been updated to be compliant to the newest Unicode Standard 13.0 (#21)
  • the dependency on the unmaintained linked-list crate has been removed (#24)

Bug Fixes

  • test cases starting with a hyphen are now correctly parsed on the command-line (#12)
  • the common substring detection algorithm now uses optionality expressions where possible instead of redundant union operations (#22)

Test Coverage

  • new unit tests, integration tests and property tests have been added

v1.0.0

4 years ago

Finally, the first stable release 1.0.0 is there. :-)

Features

  • conversion to character classes \d, \D, \s, \S, \w, \W is now supported
  • repetition detection now works with arbitrarily nested expressions. Input strings such as aaabaaab which were previously converted to ^(aaab){2}$ are now converted to ^(a{3}b){2}$.
  • optional syntax highlighting for the produced regular expressions can now be enabled using the --colorize command-line flag or with the library method RegExpBuilder.with_syntax_highlighting()

Test Coverage

  • new unit tests, integration tests and property tests have been added