lindera/
lib.rs

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    // Dictionary functions
45    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}