lindera/
lib.rs

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