- Support for latest Malli
- New schema type
- Deprecated
:regalschema - Prefer namespaced
::rm/regalschema - Please read docstrings in
lambdaisland.regal.malli
- Deprecated
- Breaking change: in order to avoid a runtime test.check dependency, generators have been moved.
- Call
(lambdaisland.regal.malli.generator/register-regal-generator)to register a generator at testing time.- Please read docstrings in
lambdaisland.regal.mallifor more information.
- Please read docstrings in
- Call
- New schema type
- Small additions and tweaks to documentation
- Upgrade dependencies
-
Support for Google RE2
-
Lazy qualifiers:
:*?,:+?,:??, and:lazy-repeat
- Some strings were misidentified as single characters, causing wrong quantification
lambdaisland.regal.generator/sampleandlambdaisland.regal.generator/generatenow can take an optional size and (forgenerate) seed
- regal/malli integration didn't work with recent versions of Malli due to breaking changes in the malli API.
- Make sure the
:anygenerator does not generate\returnor\newline normalizeshould understand[:not :whitespace]
- Add
lambdaisland.regal.generator/generateas a shorthand for generating a single value from a regal expression
- Added support for
[:repeat form num](so fixed number of repeats, instead of min/max) to the generator
- Java flavor: parse
\sand\Sto to semantically equivalent forms, instead of incorrectly parsing to:whitespace/:non-whitespace - All flavors: parse unkown escape codes to their respective characters
- Use the Malli error protocol so we get error messages automatically (thanks @ikitommi)
- Generators:
:anyshould not generate newlines (now also for cljs)
[:char ...]for code point literal[:ctrl ...]for control character literals:line-break,:alert,:escape,:vertical-whitespace,:vertical-tab[:(negative-)lookahead ... ]positve/negative lookahead[:(negative-)lookbehind ...]positive/negative lookbehind[:atomic ...]atomic groups (prevent backtracking)- Parsing of
\w \W \d \D \s \S - Parsing of suffixed expressions
+ * ? {1,2} lambdaisland.regal.normalizefor getting a canonicalized version of a regal form
- Make
:whitespacebehave consistently across platforms - Drop the use of
java.runtime.version(GraalVM compat) - Make instaparse grammar work on ClojureScript
- Generator fixes
- Correctly parse a single
&inside a bracketed character class
- Drop
[:range from to], instead use[:class [from to]] - Using
:whitespaceinside[:class ...]or[:not ...]will throw an AssertionError, since we can't support it across platforms - The parser returns canonical forms, meaning single-character strings instead of characters
Initial version of Regal as presented at ClojureD. Not officially released.