jpreprocess_core/pos/
fukushi.rs

1use std::{fmt::Display, str::FromStr};
2
3use serde::{Deserialize, Serialize};
4
5use super::{POSKind, POSParseError};
6
7#[derive(Clone, Copy, PartialEq, Debug, Serialize, Deserialize)]
8/// 副詞
9pub enum Fukushi {
10    /// \*
11    None,
12    /// 一般
13    General,
14    /// 助詞類接続
15    JoshiruiSetsuzoku,
16}
17
18impl FromStr for Fukushi {
19    type Err = POSParseError;
20    fn from_str(s: &str) -> Result<Self, Self::Err> {
21        match s {
22            "*" => Ok(Self::None),
23            "一般" => Ok(Self::General),
24            "助詞類接続" => Ok(Self::JoshiruiSetsuzoku),
25            _ => Err(POSParseError::new(1, s.to_string(), POSKind::Fukushi)),
26        }
27    }
28}
29
30impl Display for Fukushi {
31    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
32        write!(
33            f,
34            "{},*,*",
35            match &self {
36                Self::None => "*",
37                Self::General => "一般",
38                Self::JoshiruiSetsuzoku => "助詞類接続",
39            },
40        )
41    }
42}