mecab_ko_dict_validator/lib.rs
1//! MeCab-Ko Dictionary Validator
2//!
3//! This crate provides comprehensive validation tools for `MeCab` dictionary files,
4//! including checks for CSV format, POS tags, costs, encoding, duplicates, and
5//! normalization issues.
6//!
7//! # Features
8//!
9//! - CSV format validation
10//! - POS tag validation with Korean tag support
11//! - Cost range checking
12//! - Duplicate entry detection
13//! - Unicode normalization validation
14//! - UTF-8 encoding validation
15//! - Customizable validation rules via configuration files
16//! - JSON and text report formats
17//!
18//! # Example
19//!
20//! ```no_run
21//! use mecab_ko_dict_validator::{DictValidator, ValidationConfig};
22//!
23//! let validator = DictValidator::with_defaults();
24//! let report = validator.validate_file("dictionary.csv")
25//! .expect("Failed to validate dictionary");
26//!
27//! if report.is_valid() {
28//! println!("Dictionary is valid!");
29//! } else {
30//! println!("{}", report.to_text());
31//! }
32//! ```
33
34#![warn(missing_docs)]
35#![warn(clippy::all)]
36#![warn(clippy::pedantic)]
37#![warn(clippy::nursery)]
38#![allow(clippy::module_name_repetitions)]
39
40pub mod analyzer;
41pub mod config;
42pub mod report;
43pub mod rules;
44pub mod validator;
45
46// Re-export main types
47pub use analyzer::{
48 AnalysisReport, ConsistencyIssues, CostDistribution, DictAnalyzer, HistogramBin, OutlierInfo,
49 PosDistribution, PosTagStat, Recommendation, RecommendationSeverity,
50};
51pub use config::{load_config, save_config, ConfigError};
52pub use report::{
53 IssueCategory, Location, Severity, ValidationIssue, ValidationReport, ValidationStatistics,
54};
55pub use rules::{
56 CostRules, CsvRules, DuplicateRules, EncodingRules, NormalizationForm, NormalizationRules,
57 PosRules, ValidationConfig,
58};
59pub use validator::{DictEntry, DictValidator, ValidationError};