jpreprocess_core/pos/
settoushi.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 Settoushi {
10    /// 形容詞接続
11    KeiyoushiSetsuzoku,
12    /// 数接続
13    SuuSetsuzoku,
14    /// 動詞接続
15    DoushiSetsuzoku,
16    /// 名詞接続
17    MeishiSetsuzoku,
18}
19
20impl FromStr for Settoushi {
21    type Err = POSParseError;
22    fn from_str(s: &str) -> Result<Self, Self::Err> {
23        match s {
24            "形容詞接続" => Ok(Self::KeiyoushiSetsuzoku),
25            "数接続" => Ok(Self::SuuSetsuzoku),
26            "動詞接続" => Ok(Self::DoushiSetsuzoku),
27            "名詞接続" => Ok(Self::MeishiSetsuzoku),
28            _ => Err(POSParseError::new(1, s.to_string(), POSKind::Settoushi)),
29        }
30    }
31}
32
33impl Display for Settoushi {
34    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
35        write!(
36            f,
37            "{},*,*",
38            match &self {
39                Self::KeiyoushiSetsuzoku => "形容詞接続",
40                Self::SuuSetsuzoku => "数接続",
41                Self::DoushiSetsuzoku => "動詞接続",
42                Self::MeishiSetsuzoku => "名詞接続",
43            },
44        )
45    }
46}