re-set-macros

Crates.iore-set-macros
lib.rsre-set-macros
version0.2.0
sourcesrc
created_at2023-02-11 02:51:11.570189
updated_at2023-04-17 18:30:29.641407
descriptionRegular expression set parser at compile time.
homepage
repositoryhttps://github.com/lemueldls/re-set
max_upload_size
id782305
size18,983
Lemuel DLS (lemueldls)

documentation

README

re-set

Regular expression set parser at compile and run time.

Macro usage

use re_set_macros::find;

find!(fn find_identifier "[_[:alpha:]][[:word:]]*");

assert_eq!(find_identifier("foo bar"), Some((0, "foo")));
use re_set_macros::find;

find!(pub fn match_string
  // Single quotes
  r"'(\\'|.)*?'",
  // Double quotes
  r#""(\\"|.)*?""#,
  // Multi-line strings
  r"(?s)`(\\`|.)*?`"
);

let (_, string) = match_string(r#""Hello, world!""#).unwrap();

assert_eq!(string, r#""Hello, world!""#);
use re_set_macros::find;

find!(pub(crate) fn next_token
  // 0: Punctuation
  "[[:punct:]]+",
  // 1: Words
  "[[:word:]]+",
  // 2: Whitespace
  "[[:space:]]+"
);

let result = next_token("foo bar");

assert_eq!(result, Some((1, "foo")));

let (index, token) = result.unwrap();

match index {
  0 => println!("Found punctuation: {token}"),
  1 => println!("Found word: {token}"),
  2 => println!("Found whitespace: {token}"),
  _ => unreachable!(),
}
Commit count: 21

cargo fmt