rules

Crates.iorules
lib.rsrules
version0.0.2
sourcesrc
created_at2015-08-08 23:17:25.718303
updated_at2015-12-11 23:55:55.315022
descriptionAn implementation of Perl 6 regex rules
homepagehttps://github.com/mdinger/rules
repositoryhttps://github.com/mdinger/rules
max_upload_size
id2795
size403,492
(mdinger)

documentation

README

rules

A Rust implementation of Perl 6 regex rules

Build Status

Documentation

Note: if you just want a good implementation of a regex, use regex. This is an experimental library which currently would likely be entirely inadequate for your purposes. Hopefully it will be a good library someday.

This is an implementation of Perl 6 rules for Rust. Perl 6 was supposed to break anything while ignoring backwards compatibility. Thus, the regex from Perl 5 was improved into what they are now calling a framework of rules. This provides more flexibility than before and is syntactically different.

Speed is not currently a priority. If it's fast, great. If it isn't, so be it. I'm mainly trying to work towards getting the syntax working properly. If the syntax works properly, it can be experimented with even if it isn't used seriously. This is important because while regular regex are kinda powerful, they are really difficult to read, may do many non-obvious things, and things like literal whitespacing makes large regex really difficult to work with. rules changes a lot of those aspects and so hopefully makes them much more usable.

The cargo built docs are not necessarily current with the library. I scope out the official Perl6 docs for how syntax works and update my local docs to match what I understand. Then I base the library on the local docs. So the local docs should always run ahead of what the library can do. For examples of what the library can do, look at the tests in tests/re.

The main perl 6 regex docs are at doc.perl6.org. The regex design docs are at S05 which is really helpful when trying to interpret parts of the spec.

A another different intro to Perl 6 rules is found here.

Usage

Add the following to your Cargo.toml:

[dependencies]
rules = "*"

and this to your crate root:

extern crate rules;
Commit count: 111

cargo fmt