1pub mod error;
8mod lexicon;
9mod utils;
10
11mod cliche;
12mod filter_words;
13mod passive_voice;
14mod readability;
15mod sentence_variety;
16mod sentiment;
17
18#[cfg(feature = "chinese")]
19pub mod zh;
20
21pub use cliche::{detect_cliches, ClicheInstance, ClicheResult};
22pub use error::{Result, WritingAnalysisError};
23pub use filter_words::{detect_filter_words, FilterWordInstance, FilterWordResult};
24pub use passive_voice::{detect_passive_voice, PassiveInstance, PassiveVoiceResult};
25pub use readability::{analyze_readability, ReadabilityScores};
26pub use sentence_variety::{analyze_sentence_variety, SentenceVarietyResult};
27pub use sentiment::{analyze_sentiment, SentimentResult, TokenSentiment};
28pub use utils::TextStatistics;
29
30#[cfg(feature = "chinese")]
31pub use zh::{
32 analyze_all_zh, analyze_readability_zh, analyze_sentence_variety_zh, analyze_sentiment_zh,
33 detect_cliches_zh, detect_filter_words_zh, detect_passive_voice_zh, AnalysisResultZh,
34 ChineseReadabilityScores,
35};
36
37#[derive(Debug, Clone, PartialEq)]
39pub struct AnalysisResult {
40 pub readability: ReadabilityScores,
41 pub passive_voice: PassiveVoiceResult,
42 pub cliches: ClicheResult,
43 pub filter_words: FilterWordResult,
44 pub sentiment: SentimentResult,
45 pub sentence_variety: SentenceVarietyResult,
46}
47
48pub fn analyze_all(text: &str) -> Result<AnalysisResult> {
50 Ok(AnalysisResult {
51 readability: analyze_readability(text)?,
52 passive_voice: detect_passive_voice(text)?,
53 cliches: detect_cliches(text)?,
54 filter_words: detect_filter_words(text)?,
55 sentiment: analyze_sentiment(text)?,
56 sentence_variety: analyze_sentence_variety(text)?,
57 })
58}