Skip to main content

wubi/
lib.rs

1#![deny(missing_docs)]
2#![deny(rustdoc::broken_intra_doc_links)]
3
4//! `wubi` — self-developed Wubi 86 encoder + dictionary.
5//!
6//! Phase 1 deliverable: a self-contained, zero-allocation encoder
7//! ([`encode_into`], [`fn@encode`]) backed by a pluggable lookup closure.
8//!
9//! Public modules:
10//! - [`codec`] — pure algorithm + types; no external imports; usable from
11//!   `build.rs` via `#[path]`.
12//! - [`stroke`] — backward-compat re-exports from [`codec`].
13//! - [`decomp`] — owned `Decomp` and seed-file parser.
14//! - [`mod@encode`] — high-level encoder API (uses runtime PHF/HashMap tables).
15//! - [`zigen`] — 字根 → letter lookup.
16//! - [`jianma`] — 一级简码 lookup.
17//!
18//! ```ignore
19//! use wubi::{encode, embedded_seed};
20//! for (ch, decomp) in embedded_seed() {
21//!     let code = encode(&decomp).unwrap();
22//!     println!("{ch}\t{code}");
23//! }
24//! ```
25
26pub mod codec;
27pub mod decomp;
28pub mod dict;
29pub mod encode;
30pub mod jianma;
31pub mod layer;
32pub mod stroke;
33pub mod zigen;
34
35pub use codec::{DecompRef, EncodeError, Shape, Stroke, encode_with_lookup};
36pub use decomp::{Decomp, embedded_seed};
37pub use dict::{L0Snapshot, WubiDict, PROMOTE_THRESHOLD};
38pub use encode::{EncodedCode, encode, encode_into};
39pub use jianma::{iter_jianma1, lookup_jianma1};
40pub use layer::{DEFAULT_LAYER_PREFS, LAYER_BASE, LAYER_COUNT, Layer};
41pub use zigen::iter as iter_zigen;
42pub use zigen::lookup as lookup_zigen;