precis_tools/
lib.rs

1//! Tools and parsers to generate PRECIS tables from the Unicode Character Database (`UCD`)
2//! This crate is generally used to generate code to be used by other crates such as
3//! [precis-core](https://docs.rs/precis-core) or [precis-profiles](https://docs.rs/precis-profiles).
4//! Consider adding this in your [build-dependencies](https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#build-dependencies) section instead.
5
6#![deny(missing_docs)]
7
8pub use crate::generators::ascii7::Ascii7Gen;
9pub use crate::generators::backward_compatible::BackwardCompatibleGen;
10pub use crate::generators::bidi_class::BidiClassGen;
11pub use crate::generators::codepoints::CodepointsGen;
12pub use crate::generators::derived_property::DerivedPropertyValueGen;
13pub use crate::generators::exceptions::ExceptionsGen;
14pub use crate::generators::ucd_generator::{
15    GeneralCategoryGen, UcdCodeGen, UcdFileGen, UcdLineParser, UcdTableGen, UnassignedTableGen,
16    UnicodeGen, ViramaTableGen, WidthMappingTableGen,
17};
18pub use crate::generators::unicode_version::UnicodeVersionGen;
19pub use crate::generators::{CodeGen, RustCodeGen};
20pub use crate::ucd_parsers::DerivedJoiningType;
21pub use crate::ucd_parsers::HangulSyllableType;
22pub use crate::ucd_parsers::UnicodeData;
23
24pub use crate::csv_parser::{
25    CsvLineParser, DerivedProperties, DerivedProperty, PrecisDerivedProperty,
26};
27
28pub use crate::error::Error;
29
30#[cfg(feature = "networking")]
31pub mod download;
32
33macro_rules! err {
34    ($($tt:tt)*) => {
35        Err(crate::error::Error::parse(format!($($tt)*)))
36    }
37}
38
39mod common;
40mod csv_parser;
41mod error;
42mod file_writer;
43mod generators;
44mod ucd_parsers;