Skip to main content

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};