jpreprocess_core/ctype/
four.rs1use std::{fmt::Display, str::FromStr};
2
3use serde::{Deserialize, Serialize};
4
5use super::{CTypeKind, CTypeParseError};
6
7#[derive(Clone, Copy, PartialEq, Debug, Serialize, Deserialize)]
8pub enum Four {
10 Ka,
12 Ga,
14 Sa,
16 Ta,
18 Ba,
20 Ma,
22 Ra,
24 Ha,
26}
27
28impl FromStr for Four {
29 type Err = CTypeParseError;
30 fn from_str(s: &str) -> Result<Self, Self::Err> {
31 match s {
32 "カ行" => Ok(Self::Ka),
33 "ガ行" => Ok(Self::Ga),
34 "サ行" => Ok(Self::Sa),
35 "タ行" => Ok(Self::Ta),
36 "バ行" => Ok(Self::Ba),
37 "マ行" => Ok(Self::Ma),
38 "ラ行" => Ok(Self::Ra),
39 "ハ行" => Ok(Self::Ha),
40 _ => Err(CTypeParseError::new(s.to_string(), CTypeKind::Four)),
41 }
42 }
43}
44
45impl Display for Four {
46 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
47 f.write_str(match &self {
48 Self::Ka => "カ行",
49 Self::Ga => "ガ行",
50 Self::Sa => "サ行",
51 Self::Ta => "タ行",
52 Self::Ba => "バ行",
53 Self::Ma => "マ行",
54 Self::Ra => "ラ行",
55 Self::Ha => "ハ行",
56 })
57 }
58}