1pub mod dictionary;
2pub mod error;
3pub mod metadata;
4pub mod mode;
5pub mod schema;
6pub mod segmenter;
7pub mod token;
8pub mod tokenizer;
9pub mod util;
10
11use pyo3::prelude::*;
12
13use crate::dictionary::{PyDictionary, PyUserDictionary};
14use crate::error::PyLinderaError;
15use crate::metadata::{PyCompressionAlgorithm, PyMetadata};
16use crate::mode::{PyMode, PyPenalty};
17use crate::schema::{PyFieldDefinition, PyFieldType, PySchema};
18use crate::segmenter::PySegmenter;
19use crate::token::PyToken;
20use crate::tokenizer::{PyTokenizer, PyTokenizerBuilder};
21
22#[pyfunction]
23pub fn version() -> String {
24 env!("CARGO_PKG_VERSION").to_string()
25}
26
27#[pymodule]
28fn lindera(module: &Bound<'_, PyModule>) -> PyResult<()> {
29 module.add_class::<PyToken>()?;
30 module.add_class::<PyDictionary>()?;
31 module.add_class::<PyUserDictionary>()?;
32 module.add_class::<PyTokenizerBuilder>()?;
33 module.add_class::<PyTokenizer>()?;
34 module.add_class::<PySegmenter>()?;
35 module.add_class::<PyLinderaError>()?;
36 module.add_class::<PyMode>()?;
37 module.add_class::<PyPenalty>()?;
38 module.add_class::<PyMetadata>()?;
39 module.add_class::<PySchema>()?;
40 module.add_class::<PyFieldDefinition>()?;
41 module.add_class::<PyFieldType>()?;
42 module.add_class::<PyCompressionAlgorithm>()?;
43
44 module.add_function(wrap_pyfunction!(
46 crate::dictionary::build_dictionary,
47 module
48 )?)?;
49 module.add_function(wrap_pyfunction!(
50 crate::dictionary::build_user_dictionary,
51 module
52 )?)?;
53 module.add_function(wrap_pyfunction!(
54 crate::dictionary::load_dictionary,
55 module
56 )?)?;
57 module.add_function(wrap_pyfunction!(
58 crate::dictionary::load_user_dictionary,
59 module
60 )?)?;
61
62 module.add_function(wrap_pyfunction!(version, module)?)?;
63 Ok(())
64}