jpreprocess_core/pos/
doushi.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 Doushi {
10    /// 自立
11    Jiritsu,
12    /// 接尾
13    Setsubi,
14    /// 非自立
15    Hijiritsu,
16}
17
18impl FromStr for Doushi {
19    type Err = POSParseError;
20    fn from_str(s: &str) -> Result<Self, Self::Err> {
21        match s {
22            "自立" => Ok(Self::Jiritsu),
23            "接尾" => Ok(Self::Setsubi),
24            "非自立" => Ok(Self::Hijiritsu),
25            _ => Err(POSParseError::new(1, s.to_string(), POSKind::Doushi)),
26        }
27    }
28}
29
30impl Display for Doushi {
31    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
32        write!(
33            f,
34            "{},*,*",
35            match &self {
36                Self::Jiritsu => "自立",
37                Self::Setsubi => "接尾",
38                Self::Hijiritsu => "非自立",
39            },
40        )
41    }
42}