1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
//! # Pomsky
//!
//! To learn about the _pomsky language_, please read [the book][book].
//!
//! The _pomsky macro_ can be [found here][macro].
//!
//! ## Usage
//!
//! This library can parse a pomsky expression and generate a regex string:
//!
//! ```
//! use pomsky::Expr;
//! use pomsky::options::{CompileOptions, RegexFlavor};
//!
//! let options = CompileOptions { flavor: RegexFlavor::Java, ..Default::default() };
//! let regex = match Expr::parse_and_compile("'test'", options) {
//! (Some(regex), _warnings, _tests) => regex,
//! (None, diagnostics, _tests) => {
//! eprintln!("The input is not a valid pomsky expression");
//! return;
//! }
//! };
//! ```
//!
//! You can get fancy error messages with [miette] by enabling the `diagnostics`
//! feature:
//!
//! ```
//! use pomsky::Expr;
//! use pomsky::options::{CompileOptions, RegexFlavor};
//! use pomsky::diagnose::Diagnostic;
//!
//! pub fn compile(input: &str) -> miette::Result<String> {
//! let options = CompileOptions { flavor: RegexFlavor::Java, ..Default::default() };
//! let compiled = match Expr::parse_and_compile(input, options) {
//! (Some(regex), _warnings, _tests) => regex,
//! (None, diagnostics, _tests) => {
//! for diagnostic in diagnostics {
//! eprintln!("{diagnostic}");
//! }
//! miette::bail!("Failed to compile pomsky expression");
//! }
//! };
//! Ok(compiled)
//! }
//! ```
//!
//! [book]: https://pomsky-lang.org/docs/
//! [macro]: https://docs.rs/pomsky-macro/latest/pomsky_macro/
//! [miette]: https://docs.rs/miette/latest/miette/
#![warn(missing_docs)]
#[macro_use]
mod defer;
pub mod diagnose;
pub mod error;
pub mod features;
pub mod options;
mod capturing_groups;
mod compile;
mod exprs;
mod regex;
mod validation;
mod visitor;
/// Re-exports syntax node types related to tests
pub mod test {
pub use pomsky_syntax::exprs::test::*;
}
pub use exprs::Expr;
pub use pomsky_syntax::{
diagnose::{ParseError, ParseWarning as Warning},
Span,
};
pub use pomsky_syntax::list_shorthands;